[파이썬, Python] 제어문 –

1. 제어명령이란

  • 프로그램 흐름을 제어하는 ​​명령어
  • 프로그램 흐름을 효율적으로 사용하기 위해 사용
    • 조건문: if 문
    • 문 반복: while 문, for 문

2. 조건문

2-1 비교 연산자

  • 참인지 거짓인지 판단하는 데 사용되며 참이면 True, 거짓이면 False를 반환합니다.
비교 연산자 설명
x > y x는 y보다 크다
x >= y x는 y보다 크거나 같습니다
x x는 y보다 작습니다
x<=y x는 y보다 작거나 같습니다.
엑스 == 와이 x는 y와 같음
엑스 != 와이 x는 y와 같지 않습니다

print(10 > 5)
>>> True

print(10 < 5)
>>> False

print(10 >= 5) 
>>> True

print(10 <= 5)
>>> False

print(10 == 5)
>>> False

print(10 != 5 )
>>> True

2-2 if 문

  • if 문의 형식
if 조건식(결과가 True 또는 False로 반환하는 문장):
  조건식이 True인 경우 실행할 문장
  ...

bool1 = True

if bool1:    
  print('결과는 참 입니다')
print('프로그램을 종료합니다')

>>> 결과는 참 입니다
프로그램을 종료합니다
  • statement + statement가 false일 때 반환되면 true일 때 실행되는 문장을 건너뜁니다.
bool2 = False

if bool2:    # False
  print('결과는 참 입니다')
print('프로그램을 종료합니다')

  • 나이를 받아서 성인인지 판단하는 코드를 만들어 봅시다.
age = int(input('나이를 입력하세요: '))

if age > 19:
  print('성인입니다')
  print('넷플릭스 성인영화를 감상할 수 있습니다')
print('입력한나이: ', age)

>>> 나이를 입력하세요: 20
성인입니다
넷플릭스 성인영화를 감상할 수 있습니다
입력한나이:  20

  • 세미콜론 옆에 실행할 명령문을 작성할 수 있습니다. 하나의 명령문만 실행합니다.
  • 여러 문을 탭으로 들여쓰기하여 하나의 if 문에서 함께 처리할 수 있습니다.
age = int(input('나이를 입력하세요: '))

if age > 19: print('성인입니다')  

print('입력한나이: ', age)

>>>나이를 입력하세요: 10
입력한나이:  10

2-3 if-else 문

if 조건식(결과가 True 또는 False로 반환하는 문장):
  조건식이 True인 경우 실행할 문장
  ...
else:
  조건식이 False인 경우 실행할 문장
  ...
  • 나이를 받고 성인이 되면 넷플릭스 영화를 보고 성인이 아니면 디즈니를 보도록 하는 프로그램을 작성해 봅시다.
age = int(input('나이를 입력하세요: '))

if age > 19:
  print('성인입니다')
  print('넷플릭스 성인영화를 감상할 수 있습니다')
else:
  print('성인이 아닙니다')
  print('디즈니를 보세요')

print('입력한나이: ', age)

>>> 나이를 입력하세요: 5
성인이 아닙니다
디즈니를 보세요
입력한나이:  5


age = int(input('나이를 입력하세요: '))

if age > 19:
  print('성인입니다')
  print('넷플릭스 성인영화를 감상할 수 있습니다')
else:
  print('성인이 아닙니다')
  print('디즈니를 보세요')

print('입력한나이: ', age)

>>> 나이를 입력하세요: 20
성인입니다
넷플릭스 성인영화를 감상할 수 있습니다
입력한나이:  20

2-4 if-elif-else 문

  • if ~ elif ~ else 문의 형식
if 조건식1(결과가 True 또는 False로 반환하는 문장):
  조건식1이 True인 경우 실행할 문장
  ...
elif 조건식2:
  조건식2가 True인 경우 실행할 문장
  ...
elif 조건식3:
  조건식3이 True인 경우 실행할 문장
  ...
else:
  위의 모든 조건식이 False인 경우 실행할 문장
  ...
  
  > else는 필수문장이 아님!
  • 나이를 입력으로 받아 성인이나 청소년, 어린이나 유아를 출력하는 프로그램을 작성해 봅시다.
age = int(input('나이를 입력하세요: '))

if age > 19:
  print('성인입니다')
elif age > 14:
  print('청소년입니다')
elif age > 6:
  print('어린이입니다')
elif age > 0 :
  print('유아입니다')
else:
  print('잘못 입력되었습니다')

print('입력한나이: ', age)

>>> 나이를 입력하세요: 20
성인입니다
입력한나이:  20


>>> 나이를 입력하세요: -1
잘못 입력되었습니다
입력한나이:  -1

2-5 산술 연산자

산술 연산자 설명
+ 덧셈 연산
빼기 연산
* 곱셈 연산
/ 분할 작업
// 몫 연산
% 잔차 연산
**

print(10 + 3)
>>> 13

print(10 - 3)
>>> 7

print(10 * 3)
>>> 30

print(10 / 3)
>>> 3.3333333333333335

print(10 // 3)
>>> 3

print(10 % 3)
>>> 1

print(10 ** 3)
>>> 1000
  • 3.10 작업 결과 부동 소수점 오류의 결과이다

2-6 삼항 연산자

결과가 True일 경우 실행할 문장 if 조건식 else 결과가 False일 경우 실행할 문장
num = int(input('숫자를 입력하세요: '))

if num % 2 == 0:
  print('짝수입니다')
else:
  print('홀수입니다')
  
  >>> 숫자를 입력하세요: 11
홀수입니다
  • 위의 if ~ else 문을 삼항 연산자로 표현해 봅시다.
num = int(input('숫자를 입력하세요: '))

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

>>> 숫자를 입력하세요: 11
홀수입니다

과제 1

  • 국어, 영어, 수학으로 점수를 받아 총점, 평균, 성적을 계산하는 프로그램을 작성해 보자.
  • 단, 성적은 평균을 기준으로 하며, 90점 이상은 A, 80점 이상은 B, 70점 이상은 C, 60점 이상은 D, 나머지는 F입니다.
kor, eng, math = input('국어, 영어, 수학점수를 차례대로 입력하세요: ').split(' ')

total = int(kor) + int(eng) + int(math)
avg = total / 3

if avg >= 90:
  grade="A"
elif avg >= 80:
  grade="B"
elif avg >= 70:
  grade="C"
elif avg >= 60: 
  grade="D"
else:
  grade="F"

print('총점은 %3.0f점 입니다' %total)
print('평균은 %4.2f점 입니다' %avg)
print('학점은 %s 입니다' %grade)

>>> 국어, 영어, 수학점수를 차례대로 입력하세요: 100 80 55
총점은 235점 입니다
평균은 78.33점 입니다
학점은 C 입니다

삼항 연산자를 사용하여 위의 구문을 작성해 보겠습니다.

kor, eng, math = input('국어, 영어, 수학점수를 차례대로 입력하세요: ').split(' ')

total = int(kor) + int(eng) + int(math)
avg = total / 3

print('총점은 %3.0f점 입니다' %total)
print('평균은 %4.2f점 입니다' %avg)
print('학점은 A입니다') if avg >= 90 else  print('학점은 B입니다') if avg >= 80 else print('학점은 C입니다') if avg >= 70 else print('학점은 D입니다') if avg >= 60 else print('학점은 F입니다')


>>> 국어, 영어, 수학점수를 차례대로 입력하세요: 100 80 55
총점은 235점 입니다
평균은 78.33점 입니다
학점은 C입니다

삼항 연산자를 사용할 때 더 많은 명령을 실행해야 할수록 가독성이 떨어집니다.


과제 2

  • 숫자를 받아 그것이 2, 3 또는 둘 다의 배수인지 결정하는 프로그램을 작성해 봅시다.
num = int(input('숫자를 입력하세요: '))

if num % 2 == 0:
  print(f'{num}은/는 2의 배수입니다')
elif num % 3 == 0:
  print(f'{num}은/는 3의 배수입니다')
else:
  print(f'{num}은/는 2와3의 배수가 모두 아닙니다')

>>> 숫자를 입력하세요: 5
5은 2와3의 배수가 모두 아닙니다


num = int(input('숫자를 입력하세요: '))

if num % 2 == 0:
  if num % 3 == 0:
    print(f'{num}은/는 2와 3의 배수')
  else:
    print(f'{num}은/는 2의 배수입니다')
elif num % 3 == 0:
  print(f'{num}은/는 3의 배수입니다')
else:
  print(f'{num}은/는 2와3의 배수가 모두 아닙니다')
  
>>> 숫자를 입력하세요: 22
22은/는 2의 배수입니다

삼항 연산자를 사용하여 위의 구문을 작성해 보겠습니다.

num = int(input('숫자를 입력하세요: '))

print('2의 배수입니다') if num % 2 == 0 else  print('3의 배수입니다') if num % 3 == 0  else  print('2와3의 배수가 모두 아닙니다')

>>> 숫자를 입력하세요: 20
2의 배수입니다

2-7 논리 연산자

1) 그리고

  • 두 표현식의 값이 모두 True이면 결과가 True인 연산자.
  • 정보처리기사 자격을 취득하기 위해서는 전 과목의 점수가 40점 이상, 평균점수가 60점 이상이어야 합니다.
결과
진실 진실 진실
진실 잘못된 잘못된
잘못된 진실 잘못된
잘못된 잘못된 잘못된

간단한 로그인 프로그램을 만들어 봅시다.

user_id = input('아이디를 입력하세요')
user_pw = input('비밀번호를 입력하세요')

if user_id == 'admin' and user_pw == '1234':
  print('로그인 성공!')
else:
  print('아이디 또는 비밀번호를 확인하세요')
  
  >>> 아이디를 입력하세요: admin
비밀번호를 입력하세요: 1234
로그인 성공!

>>> 아이디를 입력하세요: admin
비밀번호를 입력하세요: 1111
아이디 또는 비밀번호를 확인하세요

2) 또는

  • 식이 True이면 결과가 True인 연산자입니다.
결과
진실 진실 진실
진실 잘못된 진실
잘못된 진실 진실
잘못된 잘못된 잘못된

주민등록번호를 입력하여 성별을 판별하는 프로그램을 작성해 봅시다.

jm_num = input('주민등록번호 13자리를 "-" 없이 입력하세요: ')

if jm_num(6) == '1' or jm_num(6) == '3' or  jm_num(6) == '5' or  jm_num(6) == '7' or jm_num(6) == '9':
  print('남자입니다')
else:
  print('여자입니다')
  
  >>> 주민등록번호 13자리를 "-" 없이 입력하세요: 0010113068515
남자입니다

3) 아니다

  • bool 값을 반전시키는 연산자
  • 참 → 거짓 , 거짓 → 참
bool1 = True

if bool1:    
  print('결과는 참 입니다')
else:
  print('결과는 거짓 입니다')
>>> 결과는 참 입니다


bool1 = True

if not bool1:    
  print('결과는 참 입니다')
else:
  print('결과는 거짓 입니다')
  >>> 결과는 거짓 입니다