본문 바로가기

AI인공지능 by Python/1. 기초문법

[ AI 인공지능 ] ⑥ 조건문

0. 제어문

프로그램의 흐름을 제어하기 위해서 사용하는 문법

  • 조건문
if문
  • 반복문
for문, while문

 

1. 조건문

조건에 따라서 다른 코드를 실행하고자 할 때(분기처리할 때) 사용한다

 

if문

if문바깥문장
if 조건식 : 
  if문안쪽문장
  if문안쪽문장
if문바깥문장

if문을 만나면

    1. 조건식을 확인한다

        1-1. 만약 조건식이 True(bool 타입으로 변환했을 때True)라면 if문 안쪽으로 들어와서 안쪽문장을 차례로 실행한다

        1-2. 만약 조건식이 False(bool타입으로 변환했을 때 False)라면 if문 안쪽문장을 실행시키지 않는다

print('프로그램을 시작했어요')
if True : 
  print('if문안쪽 문장입니다1')
  print('if문안쪽 문장입니다2')
print('프로그램이 끝났어요')

> 프로그램이 시작했어요

> if문안쪽 문장입니다1

> if문안쪽 문장입니다2

> 프로그램이 끝났어요

print('프로그램을 시작했어요')
if False : 
  print('if문안쪽 문장입니다1')
  print('if문안쪽 문장입니다2')
print('프로그램이 끝났어요')

> 프로그램이 시작했어요

> 프로그램이 끝났어요

 

# 사용자에게 정수를 입력받아서 짝수라면 짝수입니다
# 홀수라면 홀수입니다 출력하기
print('프로그램 시작')
num = int(input('정수입력 >> '))

if num % 2 == 0 :
  print('짝수입니다')
if num % 2 != 0 : 
  print('홀수입니다')
print('프로그램 끝')

 

if ~ else

if 조건식 : 
  조건식이 참일떄 실행문장
  ...
else : 
  조건식이 거짓일때 실행문장
  ...
# 특정 조건이 거짓일때 무언가를 실행하고 싶다면 else를 사용할 수 있다
# if ~ else는 하나의 조건문, else로 시작할 수는 없다

num = int(input('정수 >> '))

if num % 2 == 0 :
  print('짝수입니다')
else :
  print('홀수입니다')

print('프로그램끝')

 

if문과 삼항연산자

삼항연산자는 코드를 간결히 작성할 수 있지만 가독성이 떨어진다

if문은 가독성이 좋다

모든 삼항연산자는 if문으로 바꿀 수 있다

하지만 모든 if문을 삼항연산자로 바꿀 수는 없다

# 두 수를 입력받아서 둘 중 더 큰 수 혹은 서로 같다면 같다고 출력하기
# num1,num2 = list(map(int, input('두 수 띄어쓰기로 입력 >> ').split()))

# print(num1 if num1 > num2 else num2 if num1 < num2 else '같다')

# if문으로 변경

num1, num2 = list(map(int, input('두 수 띄어쓰기로 입력 >> ').split()))

if num1 > num2 : 
  print(num1)
else : 
  # ---------------------
  if num2 > num1 :
    print(num2)
  else : 
    print('같다')
  # ---------------------

 

if ~ elif ~ else

if 조건식1 :
  조건식1이 1이 참일때 실행되는 영역
elif 조건식2 :
  조건식1은 거짓, 2는 참일때 실행되는 영역
elif 조건식3 :
  조건식1,2는 거짓, 3은 참일때 실행되는 영역
... :
  ...
else :
  위에 있는 조건식이 모두 거짓일 때 실행되는 영역

조건식이 참이 된다면 밑은 해석을 하지 않는다.

num1, num2 = list(map(int, input().split()))

if num1 > num2 : 
  print(num1)
elif num2 > num1 :
  print(num2)
else :
  print('같다')

print('프로그램 종료')

 

# if문으로만 쓴다면 모든 식을 해석하기 때문에 3번을 해석하게 된다.
# elif를 써주면 하나의 문장이 되므로 불필요한 문장을 해석하지 않는다 -> 줄일 수 있다

num1, num2 = list(map(int, input().split()))

if num1 > num2 : 
  print(num1)
if num2 > num1 :
  print(num2)
if num1 == num2 :
  print('같다')

print('프로그램 종료')

 

예제1

시험 점수를 입력받아 올바른 학점을 출력하시오

  • 90점 이상 : A
  • 80점 이상 90점 미만 : B
  • 70점 이상 80점 미만 : C
  • 70점 미만 : F

당신의 학점은 __입니다

[ 방법 1 ]

score = int(input('시험점수 >> '))

if score >= 90 :
  print('당신의 학점은 A입니다.') 
elif score >= 80 : 
  print('당신의 학점은 B입니다.')
elif score >= 70 :
  print('당신의 학점은 C입니다.')
else :
  print('당신의 학점은 F입니다.')

[ 방법 2 ]

score = int(input('시험점수 >> '))

if score >= 90 :
  grade = 'A'
elif score >= 80 : 
  grade = 'B'
elif score >= 70 :
  grade = 'C'
else :
  grade = 'F'

print(f'당신의 학점은 {grade}입니다.')

[ 방법 3 ]

score = int(input('시험점수 >> '))

grade = 'F'
if score >= 90 :
  grade = 'A'
elif score >= 80 : 
  grade = 'B'
elif score >= 70 :
  grade = 'C'

print(f'당신의 학점은 {grade}입니다.')

 

예제2

사용자에게 년도를 입력받아서 윤년인지 아닌지 출력하기

윤년의 조건은 다음과 같다

  • 4의배수O 100의배수O 400의배수O --> 윤년 (2000, 2400)
  • 4의배수O 100의배수O 400의배수X --> 평년 (1900,2100)
  • 4의배수O 100의배수X 400의배수X --> 윤년 (2020, 2024)
  • 4의배수X 100의배수X 400의배수X --> 평년 (2023, 2021)

[ 방법 1 ]

year = int(input('년도 >> '))

if year % 400 == 0 :    # 400의배수0
  print('윤년')
elif year % 100 == 0 :  # 400의배수X, 100의배수0
  print('평년')
elif year % 4 == 0 :    # 400의배수X, 100의배수X, 4의배수0
  print('윤년')
else :                  # 400의배수X, 100의배수X, 4의배수X
  print('평년')

[ 방법 2] 

# 윤년인 조건1 : 4의 배수0, 100의배수X
# 윤년인 조건2 : 400의 배수0
# 조건1 혹은 조건2 둘중 하나라도 만족하면 윤년

year = int(input('년도 >> '))

if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 :
  print('윤년')
else : 
  print('평년')