(기초) 조건문, 반복문

임경민·2023년 9월 6일
1
post-thumbnail
post-custom-banner

조건식

조건식이란?

어떤 조건에 따라 실행이 분기되는 식

A if 조건식 else B : 조건식의 결과가 True이면 A 실행, 그렇지 않으면 B 실행
num1 = 60
num2 = 80

# 방법1
numResult = True if num1 > num2 else False
print('{} > {} : {}' .format(num1, num2, numResult))

# 방법2
print('{}은 {}보다 크다.' .format(num1, num2)) if numResult else print(print('{}은 {}보다 작다.' .format(num1, num2)))

예제

  1. 적설량 입력하고, 적설량 30mm 이상이면 대설 경보 발령하고, 그렇지 않으면 대설 경보를 해제하는 코드를 작성해보자.
# 적설량 경보

limSnowAmount = 30
snowAmount = int(input('적설량 입력: '))

print('적설량: {}mm, 대설 경보 발령' .format(snowAmount)) if snowAmount >= limSnowAmount \
    else print('적설량: {}mm, 대설 경보 해제' .format(snowAmount))

제어문

조건문

  • 특정 조건에 따라 프로그램을 분기
  • 조건문 종류
코드의미
if단일조건
if ~ else양자택일
if~elif다자택일(다중조건)

if

  • 실행문은 들여쓰기 필수 (문법구조)
    들여쓰기 한 부분 : 코드블럭
if 조건식:
	실행문
num1 = 10; num2 = 5

if num1 > num2:
    print('{}는 {}보다 크다.' .format(num1, num2))

if~else

  • 양자택일 조건문
  • 조건식 결과에 따라 둘 중 하나가 실행
passScore = 80
myScore = int(input('점수 입력: '))
if myScore >= passScore:
    print('합격')
else:
    print('불합격')

pass 키워드

  • 실행문이 없을 경우, Error 발생
    • 추후 코딩 할 때 사용
passScore = 80
myScore = int(input('점수 입력: '))
if myScore >= passScore:
    pass
else:
    pass

len

  • 문자의 길이를 측정
    • 공백도 '문자'로 인식
len('가나다') # 3
len(' 가나다') # 4

예제

  1. 소숫점 첫 번째 자리에서 반올림하는 프로그램을 만들어보자
# 소수 첫 번째 자리 반올림
floatNum = float(input('소수 입력: '))

if floatNum - int(floatNum) >= 0.5:
    print('올림 : {}' .format(int(floatNum) + 1))
else:
    print('내림 : {}' .format(int(floatNum)))

조건식의 두 가지 사용법

1. 조건식 결과에 따른 실행만 하는 경우
2. 조건식 결과를 변수에 할당하는 경우
  • 모든 조건식(삼항연산자)은 if ~ else문으로 변경 가능
    • 단, 모든 if ~ else문을 조건식(삼항연산자)으로 변경할 수 있는 것은 아니다.

예제

  1. 비 올 확률을 입력하고, 비 올 확률이 55% 이상이면 '우산 챙기세요.' 그렇지 않으면 '양산 챙기세요.'를 작성하는 코드를 만들자.
# 비 오면 우산, 비 안오면 양산
rainPer = int(input('비 올 확률 입력 : '))
minRainPer = 55

if rainPer >= minRainPer:
    print('우산 챙기세요.')
else:
    print('양산 챙기세요.')

다자택일 조건문

if ~ elif

  • 여러가지 조건식 결과에 따라 실행문이 결정

예제

  1. 키오스크에서 메뉴를 선택하면 영수증을 출력하는 프로그램을 만들어보자.
print('1. 카페라떼(3.5) \t 2. 에스프레소(3.0) \t 3. 곡물라떼(4.0) \t 4. 밀크티(4.3)')
userSelectNumber = int(input('메뉴 선택: '))

if userSelectNumber == 1:
    print('메뉴 : 카페라떼')
    print('가격 : 3,500원')
elif userSelectNumber == 2:
    print('메뉴 : 에스프레소')
    print('가격 : 3,000원')
elif userSelectNumber == 3:
    print('메뉴 : 곡물라떼')
    print('가격 : 4,000원')
elif userSelectNumber == 4:
    print('메뉴 : 밀크티')
    print('가격 : 4,300원')

다자택일 사용 시 주의점

  • 조건식 순서가 중요
  • 조건 범위를 명시할 것

중첩 조건문

  • 조건문 안에 또 다른 조건문 존재
    • 일반적으로 3-4단계 이상 중첩 조건문 사용 X (논리적 오류 발생 빈번)

예제

  1. 출퇴근 이동수단에 따라 세금감면 해주는 정책을 세우려고 한다. 다음 내용에 맞게 프로그램을 만들어 보자.
출퇴근 대상인가?
	출퇴근 대상자이면
		도보, 자전거 > 세금 감면 5%
		버스, 지하철 > 세금 감면 3%
		자가용 > 추가 세금 1%
출퇴근 대상자가 아니면
	세금 변동 없음
# 출퇴근 세금감면
selectNum = int(input('출퇴근 대상자 인가요? 1. 네 \t 2. 아니오'))

if selectNum == 1:
    print('교통수단을 입력하세요.')
    trans = int(input('1. 도보, 자전거 \t 2. 버스, 지하철 \t 3. 자가용'))

    if trans == 1:
        print('세금 감면 : 5%')
    elif trans == 2:
        print('세금 감면 : 3%')
    else:
        print('추가 세금 : 1%')

elif selectNum == 2:
    print('세금 변동 없습니다.')
else:
    print('잘못 입력했습니다.')

반복문

반복문이란?

특정 실행을 반복하는 것
반복문을 사용하면 프로그래밍이 간결하며, 유지 보수가 쉬움

반복문 사용 이유

  • 잦은 실수(논리적 오류) 발생
  • 비효율적

반복문의 종류

  • 횟수에 의한 반복
for i in range(100):
    print('i > {}' .format(i))
  • 조건에 의한 반복
num = 0
while (num < 10):
    print('num > {}' .format(num))
    num += 1

for문

  • 횟수에 의한 반복 for문이 주로 사용
  • 정해놓은 반복 횟수에 따라 반복 실행
    • for문도 if문과 동일하게, 'pass'키워드 사용 가능

for ~ in

for ~ in 키워드 반복횟수
	실행문

예제

for i in range(5):
    print(i)
  1. 구구단
# 7단 출력
for i in range(1, 10):
    result = 7 * i
    print('{} * {} = {}' .format(7, i, result))

반복 범위 설정

range

  • 반복할 범위를 설정하는 가장 기본적인 함수
  • 기본 사용 방법
    • 단계 매개병수는 생략 가능
      • 생략 시 1씩 증가
for i in range(A, B, C)

>> A 부터 B 까지 C 씩 증가
이 때, range함수의 범위는 A 이상 B 미만, 즉 [A,B) 로 인식
for i in range (1, 11, 1) # 1부터 10까지 1씩 증가하며 반복
for i in range (0, 10, 2) # 0부터 9까지 2씩 증가하며 반복
for i in range (5, 10, 1) # 5부터 9까지 1씩 증가하며 반복

While문

  • 조건에 의한 반복
    • 조건에 만족하면 반복 실행, 그렇지 않으면 반복 중단
    • 조건에 의한 반복은 while문이 주로 사용
  • 무한루프에 빠질 경우 프로그램에 악영향을 미칠 수 있으므로 주의!

기본 구문

while 조건:
	출력
endNum = 10; n = 0
while n <= endNum:
	print(n)
	n += 1

예제

  1. while문을 사용하여 구구단 7단을 출력해보자.
# 구구단 출력
n = 1
while n < 10:
    result = 7 * n
    print('7 * {} = {}' .format(n, result))
    n += 1

반복문 비교

for문while문
특 징- 횟수에 의한 반복- 조건에 의한 반복
예 제- 1부터 10까지의 합을 구하는 경우- 1부터 시작해서 7의 배수의 합이 50이상인 최초의 정수 출력

예제

  1. 자동차 바퀴가 한 번 구를 때마다 0.15mm씩 마모된다고 한다. 현재의 바퀴 두께가 30mm이고 최소 운행 가능 바퀴 두께가 20mm라고 할 때, 앞으로 구를 수 있는 횟수를 구해보자.
currentThickness = 30
rotationCount = 0
removeThickness = 0.15

while currentThickness >= 20:
    rotationCount +=1
    currentThickness -= removeThickness

safeRotationCount = rotationCount - 1 # 20mm 이하로 내려갈 경우 운행 불가
print('운행 가능 횟수 : {}' .format(safeRotationCount))

무한루프

무한 반복 실행

  • 무한:루프 : 반복문을 빠져나올 수 없는 경우
  1. while문에서 조건식의 결과가 항상 참인 경우
  2. 조건문에 논리형 데이터를 사용한 경우

예제

  1. 하루에 독감으로 병원에 내방하는 환자 수가 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

반복문 제어

continue

  • 반복 실행 중 continue를 만나면 실행을 생략하고, 다음 반복 실행문으로 넘어간다.

else

  • else의 실행문은 반복문이 종료된 후 실행된다.

예제

  1. 7의 배수 갯수 구하기
# continue, else 구문
cnt = 0

for i in range(100):
    if i % 7 != 0:
        continue

    print('{}는 7의 배수입니다.' .format(i))
    cnt += 1

else:
    print('99까지의 정수 중 7의 배수는 {}개입니다.' .format(cnt))

break

  • 실행을 중단하고 반복문을 중단

예제

  1. 새끼 강아지 체중이 2.2kg가 넘으면 이유식을 중단하려고 한다. 한번 이유식을 먹을 때 체중이 70g 증가한다고 할 때, 예상되는 이유식 날짜를 구하자.
    (현재 체중은 800g)
limitWeight = 2200
currentWeight = 800
date = 1

while True:
    if currentWeight >= 2200:
        break

    date += 1
    currentWeight += 70

print('이유식 중단 날짜 : {}일' .format(date))

중첩 반복문

  • 반복문 안에 또 다른 반복문 선언
# 중첩 반복문
for i in range(1, 10):
    for j in range(i):
        print('*', end = '') # end : 개행을 막음
    print() # 개행을 위해
# 중첩 반복문 (감소)
for i in range(10, 0, -1):
    for j in range(i):
        print('*', end = '')
    print()

예제

  1. 구구단 전체를 출력하자.
for i in range(1, 10):
    for j in range(2, 10):
        result = j * i
        print('{} * {} = {} \t' .format(j, i, result), end = '')
    print()
post-custom-banner

0개의 댓글