빅데이터 분석가 양성과정/Python

Ch 03-2 조건문 / if ~else 와 elif 구문

황규진 2024. 7. 4. 14:42

if문을 else와 짝으로 사용할 수 있는데 문법 형식은 아래와 같다.

if 조건식 :

조건식이 참(True)일때 실행 될 코드

else:

조건식이 거짓(False)일 때 실행 될 코드

elif 구문

if ~ else ~ 형태의 조건에 따라 실행 코드 변경을 지시할 일 도 많습니다만 if ~ else~ ~ 형태는 조건에 따라 둘 중 하나의 작어을 실행하는 것입니다. 세상에는 그렇지 않은 경우가 훨씬 더 많습니다. 예를 들어, 한 해를 4개의 시간 구간으로 나누어 1월 ~3월을 1분기, 4월 ~6월을 2분기, 7월 ~ 9월을 3분기, 10월 ~12월을 4분기로 표현하기로 약속하고 각 분기별로 해야할 일이 다르다고 가정해서 코드를 작성해 보겠다.

 

s_month = input('지금 몇 월 달입니까?')
month = int(s_month)

if 1 <= month <=3:
	print('[1분기] - 진정한 새해의 시작인 봄을 준비하세요')
elif 4 <= month <= 6:
	print('[2분기] - 년 초에 세웠던 일들을 시작하세요.')
elif 7 <= month <= 9:
	print('[3분기] - 준비해서 시작한 일들 중 일부는 성과가 나기 시작할 겁니다.')
	print('        - 첫 수확을 맛보면서 나머지 일들에 대해서도 끝까지 노력하십시오.')
else:
	print('[4분기] - 진정한 수확의 시기입니다.마무리 잘 해서 잘 걷어들이시고 한 해 마무리 잘 하세요.')

==>
지금 몇월 달 입니까? 12
[4분기] - 진정한 수확의 시기입니다.마무리 잘 해서 잘 걷어들이시고 한 해 마무리 잘 하세요.
  • if 조건문을 효율적으로 사용하기
jumsu = input('당신의 점수를 입력하세요 :')
i_jumsu = int(jumsu)

if i_jumsu >= 90:
    print('와우 대단하시네요. 어디가서 자랑하셔도 되곘어요')
elif i_jumsu >= 80:
    print('이정도면 충분합니다. 다 밥머고 살아요')
elif i_jumsu >= 70:
    print('공부 잘 한다고 다 잘 사는거 아닙니다.')
elif i_jumsu >= 60:
    print('학교 다닐 때 성적 좋다고 사회에서 성공하나요. 걱정하지 말아요')
elif i_jumsu >= 50:
    print('무슨 일 이어요? 별일 아니죠?')
else:
    print('시대를 앞서가는 혁명가시군요!')

print('프로그램 종료')

==>
당신의 점수를 입력하세요 :22
시대를 앞서가는 혁명가시군요!
프로그램 종료
  • False 로 변환되는 값
if 0:
    print('조건이 True')
else:
    print('조건이 False')

==>
조건이 False
condition = 3>2
print('조건:', condition)

if condition:
    print('조건이 True')
else:
    print('조건이 False')

==>
조건: True
조건이 True

그렇다면 if 문의 조건식에 문자열 데이터를 넘기면 어떻게 인식하는가

if 'a':
    print('조건이 True')
else:
    print('조건이 False')

==>
조건이 True
if '':
    print('조건이 True')
else:
    print('조건이  False')

==>
조건이  False

Quiz1

등수에 따라 상품이 있다. 3등은 상품권 5만원 2등은 상품권 5만원에 핸드폰 1등은 상품권 5만원, 핸드폰 그리고 노트북 등수 입력시 해당 상품 출력되도록 코드 작성

p = input('몇 등?')
p = int(p)

print('받으실 상품은 ', end = '')
prize = ''

if p <= 3:
    prize += '상품권 5만원, '
if p <=2:
    prize += '핸드폰, '
if p == 1:
    prize += '노트북, '

prize = prize[:-2]
print(prize + '입니다.')

==>
몇 등?1
받으실 상품은 상품권 5만원, 핸드폰, 노트북입니다.

 

  • 키워드 ‘pass’는 ‘아무것도 안함 이라는 뜻으로 쓰이기도 하고 어떻게 코딩 해야할지 아직 생각중이다. 나중에 여기 코드를 넣을 테니 일단은 아무것도 하지 말고 넘어가자 라는 의도이다. 전자의 의미는 코드 완성한거야. 이 때 아무것도 안할거야 이며 후자는 일단 그냥 넘어가자 라는 뜻이다.
your_choice = input('다음 중 지금 제일 먹고 싶은 것을 고르세요')

print('\\n')
print('당신의 선택은 : "{}"입니다. '. format(your_choice))
if your_choice == '수박':
    print('{}! 좋죠'.format(your_choice))
elif your_choice == '참외':
    print('{}! 좋죠. 그런데 참외를 우리나라 사람만 먹는다고 하던데요')
elif your_choice == '감':
    pass
else:
    print('목록에 없는 것을 선택하셨습니다.')

print('끝')

==>
다음 중 지금 제일 먹고 싶은 것을 고르세요감

당신의 선택은 : "감"입니다. 
끝

Quiz2

지난 주말에 식물원에 다녀왔다. 입장료를 받는다. 어린이는 만 7세 미만은 무료이고 만 7세부터 만 12세까지 2000원 만 12세 이상부터 만 18세 미만까지 400원 만 18세부터 만 64세미만 까지 8000원 만 65세 이상은 무료

만 나이를 입력하면 나이에 맞는 이용료를 출력하는 프로그램을 작성하라

age = int(input('당신의 만 나이는? :'))
if age <7 :
    price = '무료'
elif age <=12:
    price = 2000
elif age < 18:
    price = 4000
elif age<65:
    price = 8000
else:
    price = '무료'

print('만 나이가 {}이신 당신의 요금은 {}입니다.'.format(age, price))

==>
당신의 만 나이는? :18
만 나이가 18이신 당신의 요금은 8000입니다.

Quiz3

점수에 따라 A,B,C,D,F 학점을 부여하려고 한다.

90~100은 A, 즉 100점을 포함한 90점대

80~90 미만까지는 B,즉 80점대

70~80 미만까지는 C, 즉 70점대

60~70 미만까지는 D, 즉 60점대

0~60 미만은 F

실수형태로 점수를 입력받아서 A, B, C, D, F를 출력하는 코드를 작성하시오.

예를들어 점수가 82.4인경우 B학점이다.

jumsu = float(input('점수를 입력하세요 : '))

idx = int(jumsu/10)
idx = 9 if idx ==10 else idx

grades = "FFFFFFDCBA"
print(grades[idx])

==>
점수를 입력하세요 : 66
12

<참고>

# 틀린코드

x = 1

if type(x) == 'int':
    print('정수')
elif type(x) =='str':
    print('문자열')
else:
    print('몰라')

==>
몰라
# 올바른 코드

x = 'ksp'
if type(x) is int:
    print('정수')
elif type(x) is str:
    print('문자열')
else:
    print('몰라')

==>
문자열
  • type을 알아보기 위해선 단순히 비교를 하면 안되고 is를 사용해야한다.