
A if 조건식 else B
True이면 A를 실행하고, 그렇지 않으면 B를 실행한다. num1 = 10; num2 = 21
result = True if num1 > num2 else False
>>> print('num1 > num2 : {}'.format(result))
>>> print('num1은 num2보다 크다.') if num1 > num2 else print('num1은 num2보다 크지 않다.')
# num1 > num2 : False
# num1은 num2보다 크지 않다.
min_ablePoint = 100
userPoint = int(input('사용자 포인트 입력 : ))
result = '가능' if userPoint >= min_ablePoint else '불가능'
print(f'포인트 사용 가능 여부 : {result}')
조건문이란? 특정 조건에 따라 프로그램을 분기하는 구문이다.
<형식>
if조건식 : \ > 실행문(코드블록)조건식이 참(True)일 때 코드블록을 실행한다.
# <Q> ---------------------------------------------------------
# 국어, 영어, 수학 점수를 입력 받고 평균이 90점 이상이면
# '참 잘했어요.'를 출력하는 코드
korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))
avgScore = (korScore + engScore + matScore) / 3
print('평균 : %f' % avgScore)
if avgScore >= 90:
print('참 잘했어요~^^')
<형식>
if조건식 : \ > 실행문(코드블록1)
else: \ > 실행문(코드블록2)조건식이 참(True)이면 Code Block 1이 실행되고, 조건식이 거짓(False)이라면 Code Block 2가 실행된다.
# <Q> ---------------------------------------------------------
# 소수점 첫 번째 자리에서 반올림하는 프로그램 만들기
fNum = 3.14 # float(input('소수 입력 : '))
if fNum - int(fNum) >= 0.5:
print('올림 : {}'.format(int(fNum) + 1))
else:
print('버림 : {}'.format(int(fNum)))
📌 Pass 키워드로 실행문을 대신할 수 있다. 실행문을 나중에 코딩하겠다는 의미!
if ~ else 문으로 변경이 가능지만,if ~ else 문이 조건식(삼항연산자)로 변경될 수 있는 것은 아니다! min_ablePoint = 1000
userPoint = int(input('사용자 포인트 입력 : ))
if userPoint >= min_ablePoint:
result = '가능'
else:
# 실행 구문이 3가지!
result = '불가능'
lackPoint = min_ablePoint - userPoint
print(f'포인트가 {lackPoint}p 부족합니다.')
<형식>
if조건식 : \ > 실행문(코드블록1)
elif조건식 : \ > 실행문(코드블록2)
[else: \ > 실행문(코드블록3) ]여러 가지 조건식의 결과에 따라 실행문이 결정된다.
examScore = int(input('시험 성적 입력 : ')) ⬅ # 82 입력
grades = ''
if examScore >= 90:
grades = 'A'
elif examScore >= 80:
grades = 'B'
elif examScore >= 70:
grades = 'C'
elif examScore >= 60:
grades = 'D'
else:
grades = 'F'
print('성적 : {} \t 학점 : {}'.format(examScore, grades))
# 성적 : 82 학점 : B ⭕
⭐ 다자택일을 사용할 때 조건식의 순서가 중요❗
'''
✔ 위에서 차례대로 조건을 검사하다가 참인 조건을 만나면
그 아래 조건들이 Skip되므로 70점 이상은 항상 C학점이 된다.
'''
if examScore >= 70:
grades = 'C'
elif examScore >= 90:
grades = 'A'
elif examScore >= 80:
grades = 'B'
elif examScore >= 60:
grades = 'D'
else:
grades = 'F'
print('성적 : {} \t 학점 : {}'.format(examScore, grades))
# 성적 : 82 학점 : C ❌
✅ 다자택일을 사용할 경우 조건의 범위를 정확하게 명시❗하는 것이 좋다.
if examScore >= 70 and examScore < 80:
grades = 'C'
elif examScore >= 90:
grades = 'A'
elif examScore >= 80 and examScore < 90:
grades = 'B'
elif examScore >= 60 and examScore < 70:
grades = 'D'
else:
grades = 'F'
print('성적 : {} \t 학점 : {}'.format(examScore, grades))
# 성적 : 82 학점 : B ⭕

# <Q> ---------------------------------------------------------
# 컴퓨터가 난수를 발생하면 사용가 맞추는 게임
# - PC가 난수(1~1000)를 생성하고 사용자는 숫자(정수)를 입력한다.
# - 사용자가 난수를 맞추면 게임이 종료된다.
# - 만약, 못 맞추면 난수와 사용자 숫자의 크고 작음을 출력한 후
# 사용자에게 다시 기회를 준다.
# - 최종적으로 난수와 함께 사용자가 시도한 횟수를 출력한다.
import random
rNum = random.randint(1, 1000)
tryCnt = 0
gameFlag = True
while gameFlag:
tryCnt += 1
userNum = int(input('1에서 1,000까지의 정수 입력 : '))
# [조건문 1]
if rNum == userNum:
print('빙고!')
gameFlag = False
else:
# [조건문 2]
if rNum > userNum:
print('난수가 크다. Up~!!')
else:
print('난수가 작다. Down!')
print('난수 : {}, 시도 횟수 : {}'.format(rNum, tryCnt))
반복문이란? 특정 실행 구문을 반복하는 것으로
for문과while문이 있다.
'''
✔ 반복문을 사용하는 이유
'''
print('{} * {} = {}'.format(2, 1, (2 * 1)))
print('{} * {} = {}'.format(2, 2, (2 * 2)))
print('{} * {} = {}'.format(2, 3, (2 * 3)))
print('{} * {} = {}'.format(2, 4, (2 * 4)))
print('{} * {} = {}'.format(2, 5, (2 * 5)))
print('{} * {} = {}'.format(2, 6, (2 * 6)))
print('{} * {} = {}'.format(2, 7, (2 * 7)))
print('{} * {} = {}'.format(2, 8, (2 * 8)))
print('{} * {} = {}'.format(2, 9, (2 * 9)))
🚩 # 무의미하게 반복되는 코드를 간결하게 작성할 수 있다.
for i in range(1, 10):
print('{} * {} = {}'.format(2, i, (2 * i)))
정해 놓은 횟수에 따라 반복 실행하는 경우 주로
for문이 사용된다.
➡️ 형식 :for~in반복 횟수
반복 실행문(코드블록, 들여쓰기)
while문보다 for문이 더 적합하다.for문이 while문보다 더 간결하다. ❕ # [for문]
totalSum = 0
for i in range(1, 11):
totalSum += i
❕ # [while문]
totalSum = 0
n = 1
while n < 11:
totalSum += n
n += 1
print('totalSum : {}'.format(totalSum))
range() 함수가 사용된다.💡
range()함수
➡️ 형식 : range ( start, end [, step ] )range(1, 11, 1) : 1부터 10까지 1씩 정수 1로 증가 시작이 '0'이거나 단계가 '1'인 경우 생략 가능!
❗
continueKeyword반복문 실행 중 continue를 만나면 이하 실행 구문을 생략(Skip)하고, 처음으로 돌아가 다시 반복문을 실행하다.
❗
breakKeyword반복문 실행 중 break를 만나면 반복문을 종료하고 Code Block을 빠져나온다.
# <Q> ---------------------------------------------------------
# 10의 팩토리얼(10!)을 계산하는 과정에서
# 결과값이 50을 넘을 때의 숫자 구하기
result = 1; searchNum = 0
for i in range(1, 11):
result *= i
if result > 50:
searchNum = i
break
print('num : {}, result : {}'.format(num, result))
❗
elseKeywordelse의 실행문은 반복문이 모두 종료되고 난 이후에 한번 실행된다.
# <Q> -------------------------------------------------------------
# 1부터 100까지의 정수 중 3과 7의 공배수와 최소공배수를 출력하는 코드
lcm = 0 # 최소공배수
for i in range(1, 101):
if i % 3 != 0 or i % 7 != 0:
continue
print('3과 7의 공배수 : {}'.format(i))
if lcm == 0:
lcm = i
else:
>>> print('최소공배수 : {}'.format(lcm)) # 최소공배수 : 21
정해 놓은 조건에 만족할 때까지 반복 실행하는 경우 주로
while문이 사용된다.
➡️ 형식 :while조건식
반복 실행문(코드블록, 들여쓰기)조건에 만족하면 계속 반복 실행하고, 그렇지 않으면 반복을 중단하다.
for문보다 while문이 더 적합하다.while문이 더 효율적이다. totalSum = 0; maxInt = 0; n = 1
'''
✔ totalSum 조건을 만족하는 순간 루프를 빠져나오므로 효율적!!
'''
❕ while n <= 100 and totalSum <= 50:
if n % 7 == 0:
totalSum += n
maxInt = n
print('n : {}'.format(n))
n += 1
print('7의 배수의 합이 50이상인 최초의 정수는 {}이다.'.format(maxInt))
---------------------------------------------------------------
totalSum = 0; maxInt = 0
'''
✔ 1부터 100까지 다 돌아야 끝나므로 비효율적!
'''
❕ for i in range(1, 101):
if i % 7 == 0 and totalSum <= 50:
totalSum += i
maxInt = i
>>> print('7의 배수의 합이 50이상인 최초의 정수는 {}이다.'.format(maxInt))
# 7의 배수의 합이 50이상인 최초의 정수는 28이다.
반복문 내에 또 다른 반복문을 선언한 것!
# <Q> -----------------------------------------------------
# 별찍기 # 실행결과
for i in range(1, 5): # *
for j in range(i): # **
print('*', end='') # ***
print() # ****
# *****
for i in range(5, 0, -1): # ****
for j in range(i): # ***
print('*', end='') # **
print() # *
while문에서 조건식의 결과가 항상True여서 반복문을 빠져나올 수 없는 상태
# <Q> ---------------------------------------------------------
# 하루에 독감으로 병원에 내방하는 환자 수가 50명에서 100명 사이일 때,
# 누적 독감 환자 수가 최초 10,000명을 넘는 날짜를 구하는 코드
import random
sum = 0; date = 1
flag = True # 논리형 데이터 사용
while flag:
patientCount = random.randint(50, 100)
sum += patientCount
date += 1
print('날짜 : {}, \t 오늘 환자수 : {}, \t 누적 환자수 : {}'.
format(date, patientCount, sum))
if sum >= 10000:
flag = False