Life is short. You need Python.
「쇼핑하러 갈 때, 우유 하나 사와. 아, 계란 있으면 6개 사와」
라고 심부름을 부탁했다.
남편은 잠시 후, 우유를 6개 사왔다.
아내는 물었다.
if (계란 = true)
우유 6 구매
else
우유 1 구매
“돈이 있으면 택시를 타고, 돈이 없으면 걸어 간다.”
if문 : 주어진 조건을 판단한 후 그 상황에 맞게 처리해야 할 경우에 쓰이는 조건문
위와 같은 상황을 파이썬에서는 다음과 같이 표현할 수 있다.
money = True
if money:
print("택시를 타고 가라")
else:
print("걸어 가라")
if문은 if, elif, else 세 가지를 이용하여 구성된다.
if + 조건문
elif + 조건문
else + 조건문
조건문 뒤에는 컬럼(:)이 꼭 붙는다.
if test1: # if test
statements1 # Associated block
elif test2: # Optional elifs
statements2
else: # Optional else
statements3
if 1:
print('true')
if 0:
print('success')
if not 1:
print('true')
else:
print('false')
if not 0:
print('true')
else:
print('false')
x = 'killer rabbit'
if x == 'bird':
print("What a adrobale bird!")
elif x == 'bugs':
print("Oops!")
else:
print('Run away! Run away!')
if x == 'killer rabbit':
print("What a adrobale bird!")
elif x == 'killer rabbit':
print("Oops!")
else:
print('Run away! Run away!')
if x == 'killer rabbit':
print("What a adrobale bird!")
if x == 'killer rabbit':
print("Oops!")
else:
print('Run away! Run away!')
elif x=='killer rabiit':
print('success elif')
else :
print('fail elif')
if문을 만들 때는 조건문 바로 아래 문장부터 if문에 속하는 모든 문장에 들여쓰기를 해야 한다.
if 조건문:
# ======================
수행할 문장1
수행할 문장2
수행할 문장3
#=======================
# 조건문에 해당하는 statement bodies
if 조건문:
# ======================
수행할 문장1
# ======================
# 조건문에 해당하는 statement bodies
# 조건문과 상관없이 수행되는 문장
수행할 문장2
# ????
수행할 문장3
money = True
if money:
print("택시를")
print("타고")
print("가라")
x = 1
if x:
y = 2
if y:
print('block2')
print('block1')
print('block0')
money = True
if money:
print("택시를")
print("타고")
print("가라")
x = 'SPAM'
if 'rubbery' in 'shrubbery':
print(x * 8)
x += 'NI'
if x.endswith('NI'):
x *= 2
print(x)
Tab과 spacebar는 눈으로 확인할 수 없기 때문에 혼용해서 쓰면 error의 원인이 됨.
「쇼핑하러 갈 때, 우유 하나 사와. 아, 계란 있으면 6개 사와」
라고 심부름을 부탁했다.
남편이 우유 하나와 계란을 6개 사오는 조건문을 작성해보자.
계란이 있다면 우유 하나와 계란 6개, 계란이 없다면 우유 하나만 사온다.
우유가 없다면 아무 것도 사오지 않는다.
Hint01) 우유의 변수명은 ‘milk’, 계란의 변수명은 ‘eggs’
Hint02) 우유와 계란의 유무 및 개수는 변수에 저장된 값을 바꿈으로써 지정한다.
Hint03) 우유와 계란의 개수는 print 형식으로 출력한다.
<–출력 형식–>
milk : ?
eggs : ?
No eggs (계란이 없을 시)
앞서 “조건문”이란 참과 거짓을 판단하는 문장이다.
따라서 조건문과 반복문을 제대로 사용하기 위해서는 비교 연산자와 논리 연산자의 이해가 필수이다.
비교 연산자 | 설명 |
---|---|
<img width=100 /> | <img width=300/> |
x < y | x가 y보다 작다 |
x > y | x가 y보다 크다 |
x == y | x와 y가 같다 |
x != y | x와 y가 같지 않다 |
x >= y | x가 y보다 크거나 같다 |
x <= y | x가 y보다 작거나 같다 |
x = 7
y = 3
x > y
x < y
x == y
x!=y
x>=y
x<=y
비교 연산자를 사용하여 나온 결과값은 Boolean 형태로 출력된다.
결과값이 True로 나온 조건문은 참이다.
결과값이 False로 나온 조건문은 거짓이다.
money = 2000
if money >= 3000:
print("택시를 타고 가라")
else:
print("걸어가라")
「두 가지 숫자를 비교하여 다음과 같이 출력하시오.」
#### 비교 연산자 (comparison operator)
비교 연산자 | 설명 |
---|---|
<img width=100 /> | <img width=300/> |
x < y | x가 y보다 작다 |
x > y | x가 y보다 크다 |
x == y | x와 y가 같다 |
x != y | x와 y가 같지 않다 |
x >= y | x가 y보다 크거나 같다 |
x <= y | x가 y보다 작거나 같다 |
Hint01) 변수명은 자유롭게 지정한다
Hint02) if문과 비교 연산자를 사용한다
Hint03) else문은 사용하지 않는다. (only if, elif)
num1 = 20
num2 = 30
if num1 == num2:
elif num1 != num2:
| 논리 연산자 | 설명 | |:—|:—| |<img width=100 />|<img width=300/>| | x and y | x와 y 모두 참이어야 참이다 | | x or y | x와 y 둘중에 하나만 참이면 참이다 | | not x | x가 거짓이면 참이다 |
money = 2000
card = True
if money >= 3000 or card:
print("택시를 타고 가라")
else:
print("걸어가라")
money는 2000이지만 card가 True이기 때문에
money >= 3000 or card
라는 조건문이 참이 된다.
파이썬에서만 볼 수 있는 재미있는 조건문
in | not in |
---|---|
<img width=100 /> | <img width=300/> |
x in 리스트 | x not in 리스트 |
x in 튜플 | x not in 튜플 |
x in 문자열 | x not in 문자열 |
in의 뜻이 “~안에” 라는 것을 생각해보면 쉽게 이해할 수 있다.
[1,2,3]이라는 리스트 안에 1이 있는가?
1 in [1, 2, 3]
[1,2,3]이라는 리스트 안에 1이 없는가?
1 not in [1, 2, 3]
'a' in ('a', 'b', 'c')
'j' not in 'python'
elif는 이전 조건문이 거짓일 때 수행된다
elif는 개수에 제한 없이 사용할 수 있다.
If <조건문>:
<수행할 문장1>
<수행할 문장2>
...
elif <조건문>:
<수행할 문장1>
<수행할 문장2>
...
elif <조건문>:
<수행할 문장1>
<수행할 문장2>
...
...
else:
<수행할 문장1>
<수행할 문장2>
...
“주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어 가라”
Hint01) elif문을 사용하시오.
pocket = ['paper', 'cellphone', 'money']
card = True
가끔 조건문의 참, 거짓에 따라 실행할 행동을 정의할 때, 아무런 일도 하지 않도록 설정하고 싶을 때가 있다. 다음의 예를 보자.
“주머니에 돈이 있으면 가만히 있고 주머니에 돈이 없으면 카드를 꺼내라”
‘가만히 있으라고…?
pass
pass가 수행되면 아무런 결과값도 보여주지 않는다.
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket:
pass
else:
print("카드를 꺼내라")
위의 pass를 사용한 예를 보면 if문 다음에 수행할 문장이 한 줄이고, else문 다음에 수행할 문장도 한 줄밖에 되지 않는다.
이렇게 수행할 문장이 한 줄일 때 조금 더 간략하게 코드를 작성하는 방법이 있다.
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket: pass
else: print("카드를 꺼내라")
if문 다음의 수행할 문장을 콜론(:) 뒤에 바로 적어 주었다. else문 역시 마찬가지이다.
score = 70
if score >= 60:
message = "success"
else:
message = "failure"
위 코드는 score가 60 이상일 경우 message에 “success”를 아닐 경우에는 “failure”를 대입하는 코드이다.
파이썬의 조건부 표현식(conditional expression) 을 이용하면 위 코드를 다음과 같이 간단히 표현할 수 있다.
message = "success" if score >= 60 else "failure"
message
조건문이_참인_경우 if 조건문 else 조건문이_거짓인_경우
다음 코드에 주석을 달아 각 조건문을 설명하고, 결과값을 확인해보자.
a = "Life is too short, you need python"
if 'wife' in a:
print('wife')
elif 'python' in a and 'you' not in a:
print('python')
elif 'shirt' not in a:
print('shirt')
elif 'need' in a:
print('need')
else:
print('none')
a = "Life is too short, you need python"
# 'wife'라는 단어가 a 안에 존재한다면
if 'wife' in a:
# wife를 출력
print('wife')