Python-제어문(if문)

김승윤·2022년 1월 4일
0

if문

돈이 있으면 커피를 마시고, 돈이 없으면 물을 마신다

프로그래밍도 사람이 하는 것이므로 위 문장처럼 주어진 조건을 판단한 후 그 상황에 맞게 처리해야 할 경우가 생긴다. 이렇듯 프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰는 것이 바로 if문이다.

>>> money = True
>>> if money:
...	print("커피를 마신다")
>>> else:
...	print("물을 마신다")
...
커피를 마신다

money에 True를 입력했으므로 money는 참이다. 따라서 if문 다음 문장이 수행되어 '커피를 마신다'가 출력된다.

if문 기본 구조

if 조건문:
    수행할 문장1
    수행할 문장2
    ...
else:
    수행할 문장A
    수행할 문장B
    ...

조건문을 테스트해서 참이면 if문 바로 다음 문장(if 블록)들을 수행하고, 조건문이 거짓이면 else문 다음 문장(else 블록)들을 수행하게 된다. 그러므로 else문은 if문 없이 독립적으로 사용할 수 없다.

들여쓰기

위의 기본구조에서 if에 해당하는 문장은 같은 들여쓰기를 해주어야 한다.
탭(tab)도 상관 없으나 요즘은 공백(spacebar) 4번을 사용하는 것을 권장한다고 한다.
중요한 것은 탭이든 공백이든 통일해서 쓰자.

콜론(:)

if 조건문 뒤에는 반드시 콜론(:)이 붙는다. 어떤 특별한 의미가 있다기보다는 파이썬의 문법 구조이다. while이나 for, def, class문에도 역시 문장의 끝에 콜론(:)이 항상 들어간다.
파이썬이 다른 언어보다 보기 쉽고 소스 코드가 간결한 이유는 바로 콜론(:)을 사용하여 들여쓰기(indentation)를 하도록 만들었기 때문이다. 다른 언어에서는 if문을 { } 기호로 감싸지만 파이썬에서는 들여쓰기로 해결한다는 점을 기억하자.

조건문이란?

if 조건문에서 "조건문"이란 참과 거짓을 판단하는 문장

위의 예시에서 조건문은 money가 된다.

>>> money = True
>>> if money:

비교 연산자

비교 연산자설명
x<yx가 y보다 작다
x>yx가 y보다 크다
x==yx와 y가 같다
x!=yx가 y가 같지 않다
x>=yx가 y보다 크거나 같다
x<=yx가 y보다 작거나 같다

만약 3000원 이상의 돈이 있으면 커피를 마시고 그렇지 않으면 물을 마신다.

위의 예시는

>>> money = 2000
>>> if money >= 3000:
...	print("커피를 마신다")
... else:
...	print("물을 마신다")
...
물을 마신다

money>=3000 조건문이 거짓이 되기 때문에 else문 다음 문장이 수행된다.

and, or, not

연산자설명
x or yx와 y 둘 중 하나만 참이어도 참이다
x and yx와 y 모두 참이어야 참이다
not xx가 거짓이면 참이다

돈이 3000원 이상 있거나 카드가 있으면 커피를 마시고 그렇지 않으면 물을 마신다.

>>> money = 2000
>>> card = True
>>> if money >= 3000 or card:
...     print("커피를 마신다")
... else:
...     print("물을 마신다")
...
커피를 마신다

money는 2000이지만 card가 True이기 때문에 money >= 3000 or card 조건문이 참이 된다. 따라서 if문 다음 ‘커피를 마신다’ 문장이 출력된다.

x in s, x not in s

innot in
x in 리스트x not in 리스트
x in 튜플x not in 튜플
x in 문자열x not in 문자열
>>> 1 in [1, 2, 3]
True
>>> 1 not in [1, 2, 3]
False

앞에서 첫 번째 예는 "[1, 2, 3]이라는 리스트 안에 1이 있는가?" 조건문이다. 1은 [1, 2, 3] 안에 있으므로 참이 되어 True를 돌려준다. 두 번째 예는 "[1, 2, 3] 리스트 안에 1이 없는가?" 조건문이다. 1은 [1, 2, 3] 안에 있으므로 거짓이 되어 False를 돌려준다.

만약 주머니에 돈이 있으면 커피를 마시고 없으면 물을 마신다

>>> pocket = ['paper', 'cellphone', 'money']
>>> if 'money' in pocket:
...     print("커피를 마신다")
... else:
...     print("물을 마신다")
...
커피를 마신다

['paper', 'cellphone', 'money'] 리스트 안에 'money'가 있으므로 'money' in pocket은 참이 된다. 따라서 if문 다음 문장이 수행된다.

조건문에서 아무 일도 하지 않게 하고 싶다면?

  • pass를 활용하면
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket:
...     pass 
... else:
...     print("카드를 꺼내라")
...

pocket 리스트 안에 money 문자열이 있기 때문에 if문 다음 문장인 pass가 수행되고 아무 결과값도 보여 주지 않는다.

다양한 조건을 판단하는 elif

주머니에 돈이 있으면 커피를 마시고, 주머니에 돈은 없지만 카드가 있으면 커피를 마시고, 돈도 없고 카드도 없으면 물을 마신다.

위 문장을 보면 조건을 판단하는 부분이 두 군데가 있다. 먼저 주머니에 돈이 있는지를 판단해야 하고 주머니에 돈이 없으면 다시 카드가 있는지 판단해야 한다.

>>> pocket = ['paper', 'handphone']
>>> card = True
>>> if 'money' in pocket:
...     print("커피를 마신다")
... else:
...     if card:
...         print("커피를 마신다")
...     else:
...         print("물을 마신다")
...
커피를 마신다

너무 이해하기 어렵고 산만한 느낌이 든다. 이럴 때 다중 조건 판단을 가능하게 하는 elif를 사용한다.

>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
...      print("커피를 마신다")
... elif card: 
...      print("커피를 마신다")
... else:
...      print("물을 마신다")
...
커피를 마신다

즉 elif는 이전 조건문이 거짓일 때 수행된다.
elif는 개수에 제한 없이 사용할 수 있다.

조건부 표현식

  • 조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우
if score >= 60:
    message = "success"
else:
    message = "failure"

위 코드는 score가 60 이상일 경우 message에 문자열 "success"를, 아닐 경우에는 "failure"를 대입하는 코드이다.

message = "success" if score >= 60 else "failure"

if문 한 줄로 작성하기
>>> if 'money' in pocket:
...     pass 
... else:
...     print("카드를 꺼내라")
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket: pass
... else: print("카드를 꺼내라")

0개의 댓글