profile image

L o a d i n g . . .

UNIT 13. if 조건문으로 특정 조건일 때 코드 실행하기

 

  • if 조건문 사용하기

더보기

조건문은 특정 조건일 때 코드를 실행하는 문법으로, 조건문을 사용하면 조건에 따라 다른 코드를 실행할 수 있다.

 

if 조건문은 if에 조건식을 지정하고 :(콜론)을 붙이며 다음 줄에 실행할 코드가 온다.

이때 실행할 코드는 반드시 들여쓰기를 해야 한다.

if 조건식:
     코드

if 조건식을 사용한 예이다.

>>> x = 10
>>> if x == 10:
...      print('10입니다.')
... 
10입니다.

if 조건식: 다음 줄에 오는 코드는 바로 조건식이 만족할 때 실행할 코드이며, if 본문(if body)이라고 부른다.

if의 조건식이 만족하면 참(True), 만족하지 않으면 거짓(False)이다.

 

* if 조건문을 사용할 때 주의할 점

 - if 안에서 '='이 아닌 '=='을 사용했는지 확인할 것

- 조건식 끝에 :을 빠뜨리지 않도록 할 것

 

* if 조건문에서 코드를 생략하기

if 조건문에 조건식만 작성하고 코드를 생략하는 방법이다.

>>> x = 10
>>> if x == 10:
...     pass	 # TODO: x가 10일 때 처리가 필요함
...
>>> 

if 다음 줄에 pass라는 특별한 키워드를 넣으면 된다. pass는 아무 일도 하지 않는 코드인데, 나중에 작성해야 할 코드를 표시할 때 사용할 수 있다.

 

 

  • if 조건문과 들여쓰기

더보기

파이썬은 들여쓰기도 문법으로 정해져 있으며 if 조건문도 들여쓰기가 중요하다.

if에서 처음부터 들여쓰기를 4칸으로 했다면 계속 4칸으로 유지하고, 2칸으로 했다면 계속 2칸으로 유지해야 한다. 어떨 땐 4칸 어떨 땐 2칸 이렇게는 안 된다.

즉, if 다음에 오는 코드들은 반드시 들여쓰기 깊이가 같아야 한다는 것이다.

x = 10
 
if x == 10:
   print('x에 들어있는 숫자는')
   print('10입니다.')

 

x = 10
 
if x == 10:
     print('x에 들어있는 숫자는')
         print('10입니다.')     # unexpected indent 에러 발생

이 경우, if 뒤에 코드들의 들어쓰기 깊이가 달라 에러가 발생한 것을 볼 수 있다.

x = 5
 
if x == 10:
     print('x에 들어있는 숫자는')
print ('10입니다.')

또 본 경우에는 if 다음 줄에 들여쓰기가 된 코드는 if의 영향을 받아서 조건식에 따라 실행이 결정되지만, 들여쓰기가 되지 않은 코드는 항상 실행된다.

즉, 들여쓰기 하나 때문에 의도치 않은 동작이 발생할 수 있다는 것이다.(x가 5일 때는 '10입니다.'가 출력되지 않아야 하는데 출력됨) -> 자신이 의도한 부분과 코드의 들여쓰기가 일치하는지 항상 확인해야 할 것이다.

 

 

  • 중첩 if 조건문 사용하기

더보기

if를 여러 번 사용하는 중첩 if 조건문을 사용해보겠다.

다음은 변수의 값이 10 이상이면 '10 이상입니다.'를 출력한 뒤 15이면 '15입니다.', 20이면 '20입니다.'를 출력한다.

x = 15
 
if x >= 10:
     print('10 이상입니다.')
 
     if x == 15:
         print('15입니다.')
 
     if x == 20:
         print('20입니다.')

 실행 결과는 다음과 같다.

10 이상입니다.
15입니다.

중첩 if문에서도 들여쓰기가 중요하다.

if의 조건식에 따라 코드를 실행해야 하므로 print는 들여쓰기를 했는데, if 안쪽의 if를 보면 이 또한 들여쓰기가 되어 있다. 들여쓰기가 된 if x == 15: if x == 20:은 처음에 나온 if x >= 10:에 속한 코드이다. 즉, if x >= 10:의 조건식이 만족해야만 실행되는 코드라 할 수 있다.

그리고 다시 안쪽의 if에 속한 print는 들여쓰기를 한 번 더 해준다.

 

 

  • 사용자가 입력한 값에 if 조건문 사용하기

더보기

input을 사용하여 사용자가 입력한 값을 변수에 저장하고, if 조건문으로 값을 비교해보면 다음과 같다.

x = int(input())          # 입력받은 값을 변수에 저장
 
if x == 10:               # x가 10이면
    print('10입니다.')    # '10입니다.'를 출력
 
if x == 20:               # x가 20이면
    print('20입니다.')    # '20입니다.'를 출력

실행 결과는 다음과 같다.

10 (입력)
10입니다.

 

 

UNIT 14. else를 사용하여 두 방향으로 분기하기

 

  • else 사용하기

더보기

if에 else를 사용하면 조건식이 만족할 때와 만족하지 않을 때 각각 다른 코드를 실행할 수 있다.

이때, else if 조건문 뒤에 오며 단독으로 사용할 수 없으며, if와 마찬가지로 else :(콜론)을 붙이고 다음 줄에 실행할 코드가 온다.

if 조건식:
     코드1
else:
     코드2

else를 사용한 예이다.

>>> x = 5
>>> if x == 10:
...      print('10입니다.')
... else:
...      print('10이 아닙니다.')
... 
10이 아닙니다.

 

실행 흐름을 살펴보면 다음과 같다.

else if의 조건식이 만족하지 않을 때 코드를 실행한다.

즉, 조건식이 참(True)이면 if의 코드(if 본문)가 실행되고, 거짓(False)이면 else의 코드(else 본문)가 실행된다.

 

 

 

  • else와 들여쓰기

더보기

else if와 들여쓰기 규칙이 같다.

다음은 들여쓰기가 잘못된 코드이다.

x = 5
 
if x == 10:
    print('10입니다.') 
else:
print('x에 들어있는 숫자는')    # unexpected indent 에러 발생 
    print('10이 아닙니다.')

 

else도 코드가 여러 줄일 때는 들여쓰기 깊이가 같게 만들어주어야 한다.

if x == 10:
    print('10입니다.') 
else:
    print('x에 들어있는 숫자는')
    print('10이 아닙니다.')

 

 

  • if 조건문의 동작 방식 알아보기

더보기

조건식이 아닌 값으로 if else의 코드를 동작시켜 보겠다.

if True:
    print('참')    # True는 참
else:
    print('거짓')
 
if False:
    print('참')
else:
    print('거짓')    # False는 거짓
 
if None:
    print('참')
else:
    print('거짓')    # None은 거짓

당연히 True if의 코드가 실행되고, False else의 코드가 실행되는데, 특히 None은 False로 취급되므로 else의 코드가 실행된다.

 

* if 조건문에 숫자를 지정할 때

숫자는 정수(2진수, 10진수, 16진수), 실수와 관계없이 0이면 거짓, 0이 아닌 수는 참이다.

if 0:
    print('참')
else:
    print('거짓')    # 0은 거짓
 
if 1:
    print('참')    # 1은 참
else:
    print('거짓')
 
if 0x1F:    # 16진수
    print('참')    # 0x1F는 참
else:
    print('거짓')
 
if 0b1000:    # 2진수
    print('참')    # 0b1000은 참
else:
    print('거짓')
 
if 13.5:    # 실수
    print('참')    # 13.5는 참
else:
    print('거짓')

 

* if 조건문에 문자열 지정하기

문자열은 내용이 있을 때 참, 빈 문자열은 거짓이다.

if 'Hello':    # 문자열
    print('참')    # 문자열은 참
else:
    print('거짓')
 
if '':    # 빈 문자열
    print('참')
else:
    print('거짓')    # 빈 문자열은 거짓

정리 | 불값 True True로 취급하는 10진수, 16진수, 2진수, 실수, 문자열로 if를 동작시킬 수 있다.

즉, 값 자체가 있으면 if는 동작한다. 반대로 0, None, ''은 False로 취급하므로 else가 동작한다.

 

 

  • 조건식을 여러 개 지정하기

더보기

if 조건문에는 논리 연산자를 사용하여 조건식을 여러 개 지정할 수 있다.

x = 10
y = 20
 
if x == 10 and y == 20:     # x가 10이면서 y가 20일 때
    print('참')
else:
    print('거짓')

 

실행 결과는 참이다.

이렇게 논리 연산자는 보통 여러 조건을 판단할 때(조건이 복잡할 때) 사용될 수 있다.

 

 

UNIT 15. elif를 사용하여 여러 방향으로 분기하기

 

  • elif 사용하기

더보기

elif는 else인 상태에서 조건식을 지정할 때 사용하며 else if라는 뜻이다.

if, else와 마찬가지로 조건식 끝에 :(콜론)을 붙여야 하고, elif 단독으로 사용할 수 없다.

if 조건식:
     코드1
elif 조건식:
     코드2

if, elif, else를 모두 사용하면 다음과 같다.

x = 30
 
if x == 10:             # x가 10일 때
    print('10입니다.')
elif x == 20:           # x가 20일 때
    print('20입니다.')
else:                   # 앞의 조건식에 모두 만족하지 않을 때
    print('10도 20도 아닙니다.')

실행 결과는 다음과 같다.

10도 20도 아닙니다.

이렇게 하면 if, elif의 조건식이 모두 거짓일 때만 else의 코드가 실행된다. 따라서 여기서는 x가 30이라 if, elif의 조건식에 모두 만족하지 않아 마지막 else '10도 20도 아닙니다.'가 출력된다.

 

 

* 음료수 자판기 만들기

버튼 1번은 '콜라', 2번은 '사이다', 3번은 '환타'이고 각 버튼에 따라 음료수 이름을 출력한다.(1, 2, 3이외의 숫자는 '제공하지 않는 메뉴' 출력)

button = int(input())
 
if button == 1:
    print('콜라')
elif button == 2:
    print('사이다')
elif button == 3:
    print('환타')
else:
    print('제공하지 않는 메뉴')
복사했습니다!