본문 바로가기
Python

12. 파이썬 조건문(if)

by To올라운더 2023. 6. 30.
반응형

[1] 조건문(if)

  조건문은 상황에 따라 다른 동작(또는 다른 결과)를 수행할 수 있는 기능이다.

  파이썬의 문법은 '들여쓰기'가 처음이자 끝일 정도로 중요한 문법인데,

  들여쓰기에 따라 명령을 수행하는 범위가 달라진다.

 

1. 간단한 예시 및 구성

age = 25

if age > 20:
    print('성년입니다.')

  위의 코드를 간략히 알아보면

  if문은 'if 조건 :' 의 형태로 구성되며 해당 조건이 만족할 경우 수행할 코드는 띄어쓰기 4칸을 들여쓴 후 입력한다.

  이게 끝이다. 얼마나 심플한지 처음 파이썬을 배울 때 깜짝 놀란 부분이기도 하고, 

  처음엔 잘못된 들여쓰기로 다른 결과가 출력되어 많이 헤메기도 하는 부분이다.

 조건을 만족 할 때 2개 이상의 코드를 실행하려면 들여쓴 항목에 맞춰 추가적인 코드를 작성한다.

age = 25

if age > 20:
    print('성년입니다.')
    print('성인 요금은 5000원 입니다.')
    print('즐거운 관람되세요.')

 

2. 결과를 만족하지 않을 때

  - 위의 예시는 나이가 25살로 조건을 만족하지만 나이가 15살로 조건을 만족하지 않으면 아무런 결과가 나타나지 않는다.

age = 15

if age > 20:
    print('성년입니다.')
    print('성인 요금은 5000원 입니다.')
    print('즐거운 관람되세요.')

- 이번에는 조건의 결과가 False 일 때도 기능이 동작하도록 코드를 작성해보겠다.

- 코드는 if 문과 같은 들여쓰기 위치에 else 와 콜론(:)으로 표기한 뒤 실행할 코드는 들여쓰기 하여 적용한다.

    : 조건이 False 일 경우, 실행할 동작이 없으면 else를 생략 해도 문법상 문제가 되지 않는다는 것도 알 수 있다.

 

3. 조건 추가하기(elif)

   - 단순히 성년과 미성년이 아닌 청소년도 구별해야한다면 어떻게 해야할까?

     elif를 이용하여 1차로 확인된 조건을 다시 한번 확인할 수 있는 조건문을 작성할 수 있다.

age = 15

if age > 20:
    print('성년입니다.')
    print('성인 요금은 5000원 입니다.')
    print('즐거운 관람되세요.')

elif age > 13:
    print('청소년입니다.')
    print('청소년의 요금은 4500원 입니다.')
    print('즐거운 관람되세요.')

else:
    print('미성년입니다.')
    print('미성년자의 요금은 3000원 입니다.')
    print('즐거운 관람되세요.')

  - 해당 코드는 1차로 if문(주황색 박스 영역)의 조건을 확인하였으나 False

     2차로 elif문(노란색 박스 영역)의 조건을 확인하였을 때 True로 조건이 충족되므로

     elif 구문의 코드가 출력되었다.

  - 만약 age가 10살이었다면 2차 elif문(노란색 박스 영역)을 지나 else문(보라색 박스 영역)이 출력되었을 것이다.

  - elif의 경우 2개 이상도 적용 가능하다.

 

4. 이중 조건문

  - if문 안에도 if문을 추가할 수 있는데 이러한 경우를 이중조건문이라고 한다.

    (*사실 용어는 중요하지 않다. 얼마나 상황에 맞게 코드 블럭을 작성할 수 있는지가 핵심이다.)

age = 25
discount_target = True

if age > 20:
    if discount_target: # discount_target == True 와 같은 표현
        print('성년(할인대상)입니다.')
        print('성인 요금은 4000원 입니다.')
        print('즐거운 관람되세요.')
    else:
        print('성년입니다.')
        print('성인 요금은 5000원 입니다.')
        print('즐거운 관람되세요.')

elif age > 13:
    print('청소년입니다.')
    print('청소년의 요금은 4500원 입니다.')
    print('즐거운 관람되세요.')

else:
    print('미성년입니다.')
    print('미성년자의 요금은 3000원 입니다.')
    print('즐거운 관람되세요.')

  - 전체 if문 내부(주황색 박스 영역)에 할인대상인지를 확인하는 discount_target 이라는 조건이 있고 해당 조건에 대한 확인 후 결과를 출력한다.

  - 주석에 포함된 내용과 같이 '== True' 는 생략할 수 있다.

 

5. 조건문 연산1(비교연산자)

  일반적으로 사용하는 수학기호처럼 조건문에 사용할 수 있다.

비교연산자 설명 비교 연산자 설명
a < b a가 b보다 작으면 참(True) a <= b  a가 b보다 작거나 같으면 참(True)
a > b a가 b보다 크면 참(True) a >= b a가 b보다 크거나 같으면 참(True)
a == b a가 b와 같으면 참(True) a != b a가 b와 다르면 참(True)
a = 5
b = 9
c = 5
d = '5'

print(a > b) # Flase
print(a >= c) # Ture
print(a < b) # Ture
print(a <= b) # Ture
print(a == c) # Ture
print(a != b) # Ture
print(a == d) # False , int와 str로 다름

위의 표와 비교해보면 연산의 결과를 알 수 있을 것이다.

그리고 가장 중요한 것 중 하나가 우리가 이전까지 배웠던 자료의 유형인데,

마지막 12라인을 확인해보면 변수 a와 d가 5로 동일한 것 처럼 보이지만 a는 int형(숫자) 이며 d는 str형(문자)이다.

흔히 할 수 있는 실수 유형 중 하나이며 변수를 처리할 때 유형을 꼭 확인하는 습관이 필요하다.

특히 사용자에게서 변수 값을 입력받는 input()이나 대부분의 GUI (tkinter, pyqt)등에서 입력받는 값들은 str로 입력받는다.

 

 

 

6. 조건문 연산2(논리연산자)

  앞에서 배운 자료유형별 조건을 조건문에서도 적용할 수가 있는데,

  간단히 and 와 or 연산에 대해 살펴보면 

and 연산 or 연산
조건1 조건2 and 결과 조건1 조건2 or 결과
Flase Flase Flase Flase Flase Flase
Flase True Flase Flase True True
True Flase Flase True Flase True
True True True True True True

  and(앤드, 논리곱) 연산은 조건 2가지가 모두 참일 때 참

  or(오알, 논리합) 연산은 조건 2가지 중 1만 참이면 참인 결과를 나타낸다.

  추가로 not(낫) 연산은 '거짓이면 참이다' 라는 글로 봤을 때는 이해하기 어려운 용어 같지만

   해당 Boolean 값을 반대로 바꾸는 역할을 한다.

조건1 not 결과 조건1 not 결과
False True True False

  - 위의 성년과 할인대상을 한 조건에 묶어 아래와 같이 논리곱을 통해 표현할 수도 있다.

age = 25
discount_target = True


# and 사용
if age > 20 and discount_target == True:
    print('성년(할인대상)입니다.')
else:
    print('성년(할인대상)이 아닙니다.')

 

- 논리합을 통해 2가지 중 한 가지의 경우감 참일 때의 조건도 수행할 수 있는데,

  성인 금액을 내지 않는 미성년과 할인대상자일 경우 증빙서류를 확인해야 한다면

   아래처럼 논리합을 통해 조건을 수행할 수 있다.

   아래의 예시는 25살 성인이지만 감면대상 값이 True이기 때문에 논리합 조건을 만족한다.

age = 25
discount_target = True


# and 사용
if age < 20 and discount_target == False:
    print('미성년입니다.')

elif age > 20 or discount_target == True:
    print('요금 감면에 대한 증빙서류 확인이 필요합니다.')

else:
    print('성년(할인대상)이 아닙니다.')

 

7. in, not in 

  - 문자열, 튜플, 리스트 항목 안에 우리가 찾는 특정 값이 있는지 확인하는 조건이다.

  - 조건 in 대상(문자열, 튜플, 리스트): 의 형태로 조건을 지정할 수 있다.

animal_list = ['쥐','소','호랑이','토끼','용','뱀','말','양','원숭이','닭','개','돼지']

if '호랑이' in animal_list:
    print('12간지에 포함되는 동물입니다.')
else:
    print('12간지에 포함되지 않는 동물입니다.')


if '고양이' in animal_list:
    print('12간지에 포함되는 동물입니다.')
else:
    print('12간지에 포함되지 않는 동물입니다.')

조건문까지 배운 내용을 토대로 코드를 작성하면 우리가 원하는 동작이 1회에 한정해 정상 동작할 것이다.

이제 다음시간에 반복문을 통해 코드를 지속적으로 반복하는 방법에 대해 배워보겠다.

반응형

'Python' 카테고리의 다른 글

14. 파이썬 반복문(while)  (0) 2023.07.03
13. 파이썬 반복문(for)  (0) 2023.07.01
11. 딕셔너리(dictionary) 특징  (0) 2023.06.29
10. 파이썬 집합(set) 특징  (0) 2023.06.27
09. 파이썬 리스트(list) 특징  (0) 2023.06.26