파이썬과 조건문
이 글의 작성자는 C/C++ 프로그래밍을 하던 사람이다. 이 글은 Python을 복습하며 작성하는 글이니, 부족한 부분이 있으면 얼마든지 피드백을 주시기 바란다.
조건문
프로그래밍을 하다 보면 특정 조건에서만 코드를 실행하게 하고 싶을 때가 있을 것이다. 아니, 정말로 많을 것이다. 현재 객체들의 상태에 따라 코드가 다르게 동작해야 하는 경우는 정말로 많다.
현실에서도 마찬가지다. 뜨끈한 국밥이 먹고 싶어졌는데, 당장 쓸 수 있는 돈이 충분하지 않으면 사 먹을 수 없다. 국밥의 가격은 6천원인데, 당장 내가 쓸 수 있는 돈은 5천원이다. 그러면 사먹을 수 없다.
위의 국밥 이야기를 살펴보자. 국밥을 사 먹기 위한 조건은 무엇인가? 쓸 수 있는 돈이 6천원 이상이어야 한다. 이를 다시 말하면, 만약 쓸 수 있는 돈이 6천원 이상이라면 국밥을 사먹을 수 있고, 그렇지 않으면 입맛만 다시면서 지나가야 한다.
그러면 돈이 충분할 때 “냠냠”이라는 텍스트를 출력하고, 아닐 때는 아무것도 출력하지 않는 코드를 작성하고 싶으면 어떻게 해야할까?
이럴때 등장하는 것이 조건문이다.
if
가장 먼저 if에 대해 알아보자.
if condition:
condition이 True일 때 실행할 코드(들)
if를 사용하므로, if문이라고 표현하기도 한다.
if의 뜻이 무엇인가? 만약이라는 뜻이다. 그리고 위의 국밥 예시를 다시 한번 보자. 만약이라는 단어가 눈에 보일 것이다. 위의 코드의 if에 해당한다.
그리고 쓸 수 있는 돈이 6천원 이상이라는 조건을 의미하는 문장도 보일 것이다. 위의 코드의 condition에 해당한다. 지난번에 참, 거짓을 표현할 수 있는 데이터에 대해 알아본 적이 있다. 조건문의 condition은 불 데이터를 받아들인다. 비교연산자를 사용하든, 그냥 True나 False를 집어넣든, 조건의 True/False를 판별할 수 있는 형태를 넣어주면 된다.
그리고 뒤에 : 을 붙이는 것을 잊지 말자. 이거 없으면 문법 오류다!
마지막으로 국밥을 사 먹는다는, 조건을 만족했을 때 실행할 문장도 보일 것이다. 위의 코드의 condition이 True일 때 실행할 코드(들)에 해당한다.
그리고 또 하나 숨겨져있는 문자가 하나 있다. 바로 공백 문자다. 실행할 코드 앞에 공백 문자 4개를 반드시 추가해야 한다. 이 코드가 조건을 만족했을 때 실행할 코드인지, 아니면 그냥 실행할 코드인지를 구분하기 위해서다.
IDE를 사용한다면, 보통은 Tab을 누르면 알아서 공백문자 4개를 추가해준다.
그러면 국밥 코드를, 비록 실제로는 돌아가지 않는 Python 코드이지만, 작성해보자.
if 쓸 수 있는 돈이 6천원 이상:
국밥을 사먹는다. "냠냠"
그러면 실제로 돌아가는 Python 코드를 작성해보자.
슬슬 인터프리터에다 한줄한줄 집어넣기에는 코드의 양이 많아지므로, 이번 예시부터는 py 파일을 작성한다.
우선 쓸 수 있는 돈을 표현해야 한다. 현재 사용할 수 있는 돈을 표현하는 변수를 하나 만들어보자. 기왕이면 단순히 a
, b
같은 이름 말고 변수 이름만 보고도 이 변수가 어떤 정보를 담고 있는지 알 수 있도록 작명을 하는 것이 좋다.
변수 명을 잘 정해야 한다는 점이 이런 점이다. 이름만 보고도 이 변수가 어떤 역할을 수행하는지 한 눈에 들어와야 코드를 이해하기가 쉬워진다.
그러면 현재 쓸 수 있는 돈을 가리키는 변수의 이름을 money
라고 지어주자. Python에서는 변수의 이름만 미리 지어둘 순 없으므로, 쓸 수 있는 돈에 아무 숫자나 넣어보자.
money = 5000
그리고 국밥 가격을 표현하는 변수도 하나 만들어두자. 이 변수의 이름은 gukbapPrice
라고 지어주자. 국밥 가격은 위에서 6천원이라고 정했으므로 정수형 데이터 6000을 넣어주자.
gukbapPrice = 6000
이번엔 조건문 코드를 작성할 차례다. 국밥을 사 먹기 위해서는 현재 쓸 수 있는 돈이 국밥가격보다 크거나 같아야 한다. 즉, money >= gukbapPrice의 식이 참이 되어야 한다.
물론 반대로 gukbapPrice <= money 로 표현해도 된다.
이를 조건문으로 표현하면 다음과 같다.
if money >= gukbapPrice :
마지막으로, 쓸 수 있는 돈이 국밥가격 이상이면 실행할 코드를 하나 추가해야 한다. 여기서는 print()를 사용하여 국밥먹는 소리를 출력하도록 하자.
if money >= gukbapPrice :
print('국밥 냠냠')
그러면 위의 코드들을 이제 합쳐보자.
gukbap1.py
money = 5000
gukbapPrice = 6000
if money >= gukbapPrice :
print('국밥 냠냠')
위의 코드를 실행하면 아무런 출력없이 종료하는 것을 확인할 수 있다. 그렇다면 제대로 동작한 것이다. 지금 가지고 있는 돈 5000원으로는 6000원짜리 국밥을 사 먹을 수 없기 때문이다.
만약 money 변수의 값을 6천 이상으로 바꾼다면, ‘국밥 냠냠’이 출력되는 것을 확인할 수 있을 것이다.
else
위의 코드에는 국밥을 먹는 동작은 들어있지만, 돈이 부족해서 국밥을 먹지 못했을 경우 입맛을 다시는 동작은 들어있지 않다. 돈이 부족할때만 동작하는 코드는 어떻게 추가해야 할까?
if만 사용한다고 하면 다음과 같이 쓸 수도 있긴 하다.
money = 5000
gukbapPrice = 6000
if money >= gukbapPrice :
print('국밥 냠냠')
if money < gukbapPrice :
print('쩝...')
국밥을 사 먹을 돈이 부족할 때의 코드를 추가해주면 되는 일이긴 하다. 하지만 정 반대의 조건을 똑같이 적어주는 건 꽤나 비효율적이다.
만약 국밥을 사 먹는 동작에 현재 쓸 수 있는 돈을 빼는 동작이 들어간다면? 국밥을 먹고도 또 다시 입맛을 다시는 이상한 코드가 등장하게 된다. 물론 돈이 부족한지를 먼저 확인하면 그런 일은 일어나지 않겠지만, 여전히 정 반대의 조건을 적어야 한다는 사실은 변하지 않는다.
우리는 이런 동작을 원한다.
“만약 돈이 충분하다면 국밥을 먹고, 그렇지 않다면 입맛을 다신다.”
그리고 Python에서 그렇지 않다면에 대응하는 것이 else이다. 그러면 if와 else를 같이 쓰는 모습을 살펴보자.
if condition:
condition이 True일 때 실행할 코드(들)
else :
condition이 False일 때 실행할 코드(들)
else 뒤에도 :이 꼭 들어가야 한다는 사실을 잊지 말자. 없으면 문법 오류다!
그러면 국밥 사 먹을 돈이 없을때, 입맛만 다시는 코드를 추가해보자.
gukbap2.py
money = 5000
gukbapPrice = 6000
if money >= gukbapPrice :
print('국밥 냠냠')
else :
print('쩝...')
elif
5000원으로 국밥을 사 먹을순 없다. 하지만 라면 정도는 사 먹을 수 있을 것 같다. 비록 국밥만큼 든든하지는 않을 수 있으나, 뱃 속에 뭐라도 들어가는 것이 어디인가.
만약 국밥을 사 먹을만한 돈은 가지고 있지 않지만, 라면을 사 먹을 정도의 돈을 가지고 있을 경우엔 라면을 먹는 코드를 추가하고 싶다. 그렇다면 어떻게 해야할까?
Python에는 elif라는 것이 있다. elif는 else if의 줄임말로, else + if라고 보면 된다. 앞의 if문의 condition이 False일 때, 또 한번 조건 체크를 할 수 있도록 도와주는 구문이다. 어떻게 생겼는지 보자.
if condition1:
condition1이 True일 때 실행할 코드(들)
elif condition2 :
condition2가 True일 때 실행할 코드(들)
else :
condition2가 False일 때 실행할 코드(들)
elif는 if 또는 elif 뒤에만 온다면 계속해서 사용할 수 있다.
if condition1:
condition1이 True일 때 실행할 코드(들)
elif condition2 :
condition2가 True일 때 실행할 코드(들)
elif condition3 :
condition3이 True일 때 실행할 코드(들)
elif condition4 :
condition4가 True일 때 실행할 코드(들)
위의 코드처럼 elif 다음에 반드시 else가 와야하는 것은 아니다.
그러면 국밥먹을 돈이 있으면 국밥을, 국밥먹을 돈은 부족하지만 라면 먹을 돈이 있으면 라면을, 그것도 모자라다면 입맛을 다시는 코드를 작성해보자.
그러면 라면의 가격을 표현하는 변수도 새로 추가해야 한다. 이 변수의 이름은 ramenPrice
로 정하자. 그리고 가격은 3000원으로 정해보자.
gukbap_ramen.py
money = 5000
gukbapPrice = 6000
ramenPrice = 3000
if money >= gukbapPrice :
print('국밥 냠냠')
elif money >= ramenPrice :
print('라면 냠냠')
else :
print('쩝...')
조건문은 앞으로 신나게 쓰게 될 것이다. 그리고 나중에 다른 프로그래밍 언어를 배운다 하더라도, Python에서 배운 내용과 크게 다른 것은 없을 것이다. 어려운 내용은 없었지만, 잘 알아두고 넘어가도록 하자.
Comments