if문은 왜 필요할까?
다음과 같은 상상을 해보자.
"돈이 있으면 택시를 타고, 돈이 없으면 걸어 간다."
우리 모두에게 일어날 수 있는 상황 중 하나이다. 프로그래밍도 사람이 하는 것이므로 위 문장처럼 주어진 조건을 판단한 후 그 상황에 맞게 처리해야 할 경우가 생긴다. 이렇듯 프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰는 것이 바로 if문이다.
위와 같은 상황을 파이썬에서는 다음과 같이 표현할 수 있다.
>>> money = True
>>> if money:
... print("택시를 타고 가라")
... else:
... print("걸어 가라")
...
택시를 타고 가라
money에 True를 입력했으므로 money는 참이다. 따라서 if문 다음 문장이 수행되어 '택시를 타고 가라'가 출력된다.
점프 투 파이썬주의사항
>>> 프롬프트가 보이는 이 책의 예제는 반드시 IDLE 셸이 아닌 파이썬 셸에서 실행하도록 하자. IDLE 셸에서는 '...' 과 같은 줄 바꿈 표시가 보이지 않아 들여쓰기 오류를 범할 가능성이 크다.
하지만 파이썬 3.10 부터는 IDLE 셸의 >>> 프롬프트와 ...과 같은 줄 바꿈 표시가 좌측의 영역으로 분리되어 표시되도록 다음과 같이 개선되었다.
따라서 파이썬 3.10 이상의 버전을 사용한다면 이 책의 예제를 IDLE에서 실행해도 괜찮다.
if문의 기본 구조
다음은 if와 else를 사용한 조건문의 기본 구조이다.
if 조건문:
수행할 문장1
수행할 문장2
...
else:
수행할 문장A
수행할 문장B
...
조건문을 테스트해서 참이면 if문 바로 다음 문장(if 블록)들을 수행하고, 조건문이 거짓이면 else문 다음 문장(else 블록)들을 수행하게 된다. 그러므로 else문은 if문 없이 독립적으로 사용할 수 없다.
들여쓰기
if문을 만들 때는 if 조건문: 바로 아래 문장부터 if문에 속하는 모든 문장에 들여쓰기(indentation)를 해주어야 한다. 오른쪽에서 보는 것과 같이 조건문이 참일 경우 "수행할 문장1"을 들여쓰기했고 "수행할 문장2"와 "수행할 문장3"도 들여쓰기 해 주었다. 다른 프로그래밍 언어를 사용해 온 사람들은 파이썬에서 "수행할 문장"을 들여쓰기하는 것을 무시하는 경우가 많으니 더 주의해야 한다.
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
다음처럼 작성하면 오류가 발생한다. "수행할 문장2"를 들여쓰기하지 않았기 때문이다.
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
IDLE 에디터에서 다음과 같이 작성하여 실행해 보자. 여기에서는 오류가 뜨는지 확인만 하면 되니 IDLE 에디터 창에서 바로 실행하자(단축키:F5).
money = True
if money:
print("택시를")
print("타고")
print("가라")
들여쓰기 오류가 발생하는 것을 확인할 수 있다.
다음과 같은 경우에도 오류가 발생한다. "수행할 문장3"을 들여쓰기했지만 "수행할 문장1"이나 "수행할 문장2"와 들여쓰기의 너비가 다르다. 즉 들여쓰기는 언제나 같은 너비로 해야 한다.
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
IDLE 에디터에서 다음과 같이 작성하여 실행해 보자.
money = True
if money:
print("택시를")
print("타고")
print("가라")
마찬가지로 들여쓰기 오류가 발생하는 것을 확인할 수 있다.
그렇다면 들여쓰기는 공백(Spacebar)으로 하는 것이 좋을까? 아니면 탭(Tab)으로 하는 것이 좋을까? 이에 대한 논란은 파이썬을 사용하는 사람들 사이에서 아직도 계속되고 있다. 탭으로 하자는 쪽과 공백으로 하자는 쪽 모두가 동의하는 내용은 단 하나, 2가지를 혼용해서 쓰지는 말자는 것이다. 공백으로 할 거면 항상 공백으로 통일하고, 탭으로 할 거면 항상 탭으로 통일해서 사용하자는 말이다. 탭이나 공백은 프로그램 소스에서 눈으로 보이는 것이 아니기 때문에 혼용해서 쓰면 오류의 원인이 되니 주의하자.
※ 요즘 파이썬 커뮤니티에서는 들여쓰기를 할 때 공백(Spacebar) 4개를 사용하는 것을 권장한다.
if 'a' in 'abc' :
print('a')
elif 'b' in 'aaa':
print('b')
else :
print('x')
결과는 a
else 까지 있으면 무조건 어떠한 값이 하나는 출력이 된다
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] 문제 - 로또번호 예측 (0) | 2022.09.22 |
---|---|
[Python] 별찍기 (0) | 2022.09.21 |
[Python] 불 자료형 (1) | 2022.09.20 |
[Python] 집합 자료형 (2) | 2022.09.20 |
[Python] 딕셔너리 자료형 (1) | 2022.09.20 |