많은 컴퓨터 언어는 코드의 시작과 끝을 표시하기 위해 키워드나 중괄호 ({ })와 같은 문자를 사용한다. 그리고 코드 작성자와 다른 사람이 코드를 좀 더 읽기 쉽도록 일관된 들여 쓰기를 하는 것도 좋은 습관이다.
「#」
> 파이썬은 (#)을 사용해서 주석을 표시한다. (#)가 시작된 곳부터 그 라인의 마지막 까지가 주석이다.
> (#)은 hash, sharp, pound, octothorpe 라는 이름이 있다. 어떤 이름으로 불러도 그 라인의 끝까지 주석의 효력을 발휘한다. 하지만 (#)가 문자열 안에 있다면, 주석이 아닌 평범한 문자로 처리한다.
「\」
> 코드는 한 줄에서 권장하는 최대 문자 수가 80자다. 만일 모든 코드를 이 안에 입력 할 수 없다면, 백슬래시(\) 문자를 입력하고 다음줄에 계속 입력하면 된다.
> ( \ ) = 라인 유지, 파이썬의 경우 줄 끝에 ( \ )를 입력하면 다음 줄을 여전히 같은 줄로 인식한다.
「비교문」
> if, elif, else 는 조건이 True 인지 False 인지 확인한느 선문문이다.
> 파이썬에서는 if 조건문에 괄호가 필요 없다. 대신 : (콜론)을 사용한다. 만일 : (콜론)을 입력하지 않으면 오류가 발생한다.
※ 파이썬에서 들여쓰기는 4칸의 스페이스를 사용하는데, 탭 혹은 택과 스페이스를 혼합해서 들였으면 공백의 수가 흐트러지기 때문에 혼합해서 사용하면 안 된다.
> if, elif, else의 예제문
color="brown"
if color == "red"
print("it's tomato")
elif color == "green"
print("avocado")
else color == "purple"
print("dont' know what it is")
else
print("i've never saw it before")
「비교 연산자」
비교 연산자 | 의미 |
A == B | A와 B는 같다 |
A != B | A와 B는다르다 |
A < B | A는 B 보다 작다 |
A <= B | A는 B보다 작거나 같다 |
A > B | A는 B보다 크다 |
A >= B | A는 B 보다 크거나 같다 |
> 동시에 여러개의 식을 비교해야 한다면 불리언 값을 판단하기 위해 and, or, not과 같은 논리 연산자를 사용할 수 있다. 하지만 논리 연산자는 비교 연산자 보다 우선순위가 낮다.
x=7
(5<x) and ( x<10)
> 위 코드를 예로 들 수 있다. x에 7을 할당하고, 5<x를 계산하고, x <10을 계산한 다음 나온 True와 True 값을 계산해서 최종 결과물은 True가 나온다.
> 파이썬은 하나의 변수를 여러 번 비교하는 것을 할당 한다.
※우선순위의 혼란을 피하는 가장 좋은 방법은 괄호( )를 추가 하는 것이다.
「True, False」: True와 False를 구분하는 방법
> False값은 명시적으로 False라 할 필요가 없다. 다음 표에 있는 것을 제외하고는 모두 True로 간주한다. 파이썬 프로그램에서 데이터 자료구조가 False 조건인지 확인하기 위해서 진실 혹은 거짓의 정의를 사용한다.
boolean | false |
null | none |
정수 0 | 0 |
부동소수점 0 | 0.0 |
빈 문자열 | ' ' |
빈 리스트 | [ ] |
빈 튜플 | ( ) |
빈 딕셔너리 | { } |
빈 셋 | Set( ) |
※여러 조건 한번에 비교하기
letter = 'a'
if letter == 'a' or letter =='e' or letter == 'i' or letter =='o' or letter =='u':
print(letter, 'is a vowel')
else:
print(letter, 'it's not vowel')
> 위와 같은 변수에 여러 값을 비교할 때 멤버십 연산자인 in을 사용할 수 있다
vowels = 'aeiou'
letter = 'a'
if letter in vowels:
print(letter, 'it is vowel')
else:
print(letter, 'it is not vowel')
> 이처럼 간결하게 표현 할 수 있다.
※신기술: 바다코끼리 연산자( := )
tweet_limit=280
tweet_string="blash"*50
diff=tweet_limit-len(tweet_string)
if diff>=0:
print("a fitting tweet")
else:
print("went over by", abs(diff))
위의 코드를 다음과 같이 바꿀 수 있다.
tweet_limit=280
tweet_string="blash"*50
if diff=tweet_limit-len(tweet_string)>=0:
print("a fitting tweet")
else:
print("went over by", abs(diff))
「반복문」
「while」: 간단한 looping 매커니즘
count=1
while count<=5:
print(count)
count+=1
- count 변수에 1을 할당했다.
- while 문은 count 값이 5보다 작거나 같은지 계속 비교한다.
- 반복문 안에서 count 변수 값을 출력하고 count+=1 문장에 의해 count 변수 값이 1씩 증가한다. 반복문에 의해 맨 위로 돌아가서 다시 비교를 시작한다.
- 반복문은 count변수가 5에서 6으로 증가할 때까지 계속 실행한다. count <=5가는 False 이므로 While문이 종료된다.
「break」: 어떤 일이 일어날 때까지 반복하고 싶지만, 언제 일어날지 모르면 "무한 반복문"break문을 사용한다.
while True:
stuff=input("string to capitalize [type q to quit]:")
if stuff='q':
break
print(stuff.capitialize())
「continue」: 반복문을 중단하지 않고 건너뛰고 싶을 때
while True:
value=input("integer, please [q to quit]:")
if value==q=:
break
number=int(value)
if number%2==0:
continue
print(number, "squared is", number*number)
「for, in」: 자료구조가 얼마나 큰지, 어떻게 구현되는지에 관계없이 자료구조를 순회할 수 있게 해주는 것이 "이터레이터"이다. 데이터가 메모리에 맞지 않더라고 "데이터 스트림"을 처리할 수 있게 허용해 준다.
for문 규칙
for 반복자 in 반복할 수 있는것:
코드
> 반복할 수 있는 것에는 문자열, 리스트, 딕셔너기, 범위 등이 있다.
word='thud'
offset=0
while offset<len(word):
print(word[offset])
offset+=1
위 코드를 for와 in을 사용하면 다음과 같이 표현할 수 있다.
for letter in word:
print(letter)
> for 문에서 break문은 while문에서처럼 똑같이 작동한다.
>for 문에서 continue문은 while문에서 처럼 똑같이 작동한다.
※ while문과 마찬가지로 for 문의 else문도 비직관적으로 보일 수 있지만 for문은 무언가를 찾는 것으로 생각하고 찾지 못했다면 else 문이 호출된다고 생각하면 이해하기 쉽다. else문 없이 같은 효과를 얻으려면 원하는 값을 찾았는지 여부를 나타내는 변수를 사용하면 된다.
「range」: 범위
range(A): 0부터 A-1까지의 정수로 범위를 만듦
range(A, B): A부터 B-1까지의 정수로 범위를 만듦
rannge(A, B, C): A부터 B-1까지, 앞 뒤 C만큼 위차 이를 가짐
for문에서 활용
for 숫자변수 in 범위:
코드