본문 바로가기
Python/Basic

[파이썬, Python] 제어문 - 1️⃣ 조건문_ if문, 삼항 연산자, 논리 연산자

by coding-choonsik 2023. 3. 7.
728x90
반응형
SMALL

1. 제어문 이란 ❓

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

2. 조건문

2-1. 비교 연산자

  • 참인지 거짓인지 판단하기 위해 사용되며 참일 경우 True, 거짓일 경우 False 반환한다.
비교연산자 설명
x > y x 는 y 보다 크다
x >=  y x 는 y 보다 크거나 같다
x < y x 는 y 보다 작다
x <= y 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('프로그램을 종료합니다')

>>> 결과는 참 입니다
프로그램을 종료합니다
  • if 문 + False가 반환될 때 문장일 경우 True일 때 실행되는 문장을 건너 뛴다.
bool2 = False

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

  • 나이를 입력받아 성인인지를 판별하는 코드를 만들어보자.
age = int(input('나이를 입력하세요: '))

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

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

  • 세미콜론 옆에 실행할 문장을 작성할 수 있다. 하나의 문장만 실행한다.
  • tab으로 들여쓰면 여러문장을  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

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의 배수인지 아니면 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) AND

  • 양쪽 두 식의 값이 모두 True인 경우 결과가 True가 되는 연산자
  • 정보처리 기사 자격을 취득하기 위해서는 모든 과목이 40점 이상이고 평균이 60점 이상이 되어야 함.
A B 결과
True True True
True False False
False True False
False False False

간단한 로그인 프로그램을 만들어보자.

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

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

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

 

2) OR

  • 양쪽 두 식의 값이 하나라도 True인 경우 결과가 True가 되는 연산자
A B 결과
True True True
True False True
False True True
False False False

주민등록번호를 입력받아 성별을 판별하는 프로그램을 작성해보자.

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) NOT

  • bool 의 값을 반대로 변경해주는 연산자
  • True → False , False → True
bool1 = True

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


bool1 = True

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

 

728x90
반응형
LIST