[Python 기초] 프로그램의 구조, 제어문 - if문

업데이트:

개요

jpg


1. if문의 개념

돈이 있으면 택시를 타고, 돈이 없으면 걸어간다.

위와 같은 상황이 있다고 가정해 보자.
이런 상황을 코드로 구현해서 조건에 맞게 어떤 동작을 수행하라는 명령을 내리는 것이 바로 if문이다.

png
출처 : https://wikidocs.net/3084

if문의 구조는 때에 따라 복잡해 질수도 있다.
간단한 예로 위의 그림을 보면 조건이 참(True)일때 수행할 code1와 거짓(False)일때 수행할 code2를 설정해주면 조건에 맞게 수행을 하게 된다.


2. 조건문 활용

if문의 예시를 보기전 앞의 참과 거짓 포스팅을 참고하자.

2-1. 자료형의 구분기준

money = 1
if money:
    print("돈이 있다.")
else:
    print("돈이 없다.")
[Output] 돈이 있다.

money = 1은 참(True)이므로 print("돈이 있다")명령이 수행되었다.

2-2. 비교연산자

x = 3
y = 2
if x > y:
print(x + y)
[Output] 5 x가 y보다 크므로(True이므로) `print(x + y)`명령이 수행되었다.  
money = 3000
if money >= 4000:	# money가 4000보다 크거나 같으면
    print("택시")    # "택시"를 출력하고
else:               # 그렇지 않으면
    print("버스")    # "버스"를 출력해라
[Output] 버스

2-2. and, or, not 연산자

money = 2000
card = 1
if money >= 3000 or card:
    print("택시")
else:
    print("버스")
[Output] 택시

참과 거짓 포스팅에서 설명했듯이, 위 제어문은 다음과 같이 해석 할 수 잇다.

money가 3000이상이거나 card가 참(True)이라면 택시를 출력하고, 둘다 거짓(False)이라면 버스를 출력해라

money = 2000
if not money >=3000:
    print("택시")
[Output] 택시

money가 3000보다 작다면(반대) 택시를 출력해라

2-3. in, not in 연산자

pocket = ['paper','cellphone','money']
if 'money' in pocket:
    print("돈이 주머니에 있다")
else:
    print("돈이 주머니에 없다")
[Output] 돈이 주머니에 있다

innot in연산자는 리스트, 튜플, 문자열 내에 포함 여부를 판단하는 연산자이다.


3. 다양한 조건을 판단하는 elif

다음과 같은 복잡한 상황을 구현해보자.

“주머니에 돈이 있으면 버스를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어가라”

정리해보면 다음과 같이 3가지 경우이다.

  • 돈이 있는 경우 -> 버스
  • 돈은 없고 카드가 있는 경우 -> 택시
  • 돈도 카드도 없는 경우 -> 걷기
pocket = ['paper','cellphone','card']
if 'money' in pocket:
    print("버스")
else:
    if 'card' in pocket:
        print("택시")
    else:
        print("걸어가라")
[Output] 택시

in 연산자를 이용해서 if문을 만들었지만, 여전히 복잡해 보인다.
이럴때 elif를 사용하면 간단히 표현할 수 있다.

elif조건문

if 조건문:
수행할문장1-1
    수행할문장1-2
    ...
elif 조건문:
수행할문장2-1
    수행할문장2-2
    ...
...
elif 조건문(N번째):
수행할문장N-1
    수행할문장N-2
    ...
else:
수행할문장A
    수행할문장B
    ...

이와 같이 elif 조건문은 이전 조건문이 거짓일 경우의 조건문을 다시 걸어주는 형태로 말그대로 elseif를 합쳐버린 의미이다.
또한 개수에 제한없이 계속 사용이 가능하다.

pocket = ['paper','cellphone','card']
if 'money' in pocket:   # 돈이 있으면
    print("버스")
elif 'card' in pocket:   # 돈은 없고 카드가 있으면
    print("택시")
else:                    # 둘다 없으면
    print("걸어가라")
[Output] 택시

애초에 코드가 길지 않았기 때문에 확연한 차이는 없어보이지만, 조건이 많아질수록 elif를 사용하면 명확하게 파악이 가능하다.


Reference

도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.

댓글남기기