본문 바로가기

프로그래밍 언어/Python

[Python] 제어문 if

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