오늘은 제어문에 대해서 공부해 보려고 합니다.
오늘 공부하려는 제어문은 if문과 for문 그리고 while문 입니다.
if문은 영어 해석 그대로 "만약에~"를 사용하는 것이라고 생각하면 편합니다.
예시로 횡단보도를 생각한다면 초록불에는 건너고 빨간불에서는 기다려합니다.
그것을 if문으로 짠다면
if 초록불이 들어왔다면:
횡단보도를 건넌다
else:
초록불을 기다린다.
이와 같이 만들 수 있을 겁니다. 여기서 else는 "그것이 아니라면"이라고 생각하시면 됩니다.
if문에도 여러가지 방법이 있습니다만 기본적인 알고리즘은 같습니다.
for문은 "~일 때까지"라고 생각하시면 됩니다.
기본 적인 구조로는
for [변수] in [문자열, 리스트, 튜플]:
[수행부분]
형태입니다.
배열에서 배운 것과 같이 구구단중 3단을 예시로 들면
input
for i in range(1, 10):
print(3, 'x', i, '=', 3*i)
output
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
이되겠습니다. i의 값이 1~9까지 들어가게 되고 구구단 형식의 모양으로 만들기 위해 추가적인 문자열('x'와 '=')을 넣어 만들 수 있습니다.
while문 true(참,1)와 false(거짓,0)문 입니다.
예시로 6000원이 있는 사람이 3000원 커피를 사려고합니다.
while 돈:
돈 = 돈 - 3000
이되면서 2번 사게되면 0원이 되어 false(0)이 되어 반복문이 정지하게 됩니다.
input
color=input('색상을 입력하세요:')
if color=='green':
print('건너가세요')
print('괜찮아요')
elif color=='yellow':
print('서두르세요')
else:
print('기다리세요')
green을 예시로 넣어본다면
output
건너가세요
괜찮아요
로 출력이 됩니다. input값에 green을 넣게 되면 if문 중 green에 해당하는 곳에서 작동하게 되고 '건너가세요' '괜찮아요'가 출력이 되고
yellow를 넣게되면 파이썬의 특성상 if문 중 green에 먼저 도착하지만 조건에 만족하지 않아 다음 조건문인 yellow에 도착합니다. 해당 라인에는 조건이 만족하기에 '서두르세요'가 출력되고,
else문에 의해 yellow와 green 외에는 기다리세요가 출력되게 됩니다.
input
num=int(input('숫자를 입력하세요:'))
if num % 2 == 0:
print('짝수입니다.')
else:
print('홀수입니다.')
3을 예시로 넣게되면
output
홀수입니다.
값 % 2 == 0은
값을 2로 나누었을 때 나머지가 0인 것입니다. 짝수는 2로 나누어 떨어지기 때문에 짝수를 구하는 조건문이 되고 3을 넣었기에 나머지가 1이 되면서 '홀수입니다.'가 출력되게 됩니다.
input
numbers=[1,2,3,4,5] # 리스트
a=0
for i in numbers: # for 개별값 in 집합
a=a+i
print(i)
print('합계:',a)
output
1
2
3
4
5
합계: 15
i를 numbers의 값만큼 반복한다는 코드입니다. 그렇기에 반복문이 돌 때마다 1,2..,5가 나오고
이것을 더해준 1+2+3+4+5 값인 15가 a로 출력되게됩니다.
input
# 1~10의 합계 #list(range(1,11))로 range(1,11)안 값 확인
a=0
for i in range(1,11): #1~10
a+=i
print(a)
output
55
range는 좌측변수 ~ 우측변수-1 까지라고 인식하시면 이해하기 쉽습니다.
출력값으로 1+2+3+...,10 까지의 값인 55가 출력되게 됩니다.
input
a=[(1,2),(3,4),(5,6)] # 리스트의 요소가 튜플
for (first,last) in a: # 튜플에 저장
print(f'{first} + {last} = {first + last}')
output
1 + 2 = 3
3 + 4 = 7
5 + 6 = 11
이런식의 응용도 가능합니다.
input
points=[90,25,67,45,80]
number=0
print('총점:',sum(points))
print('평균:',sum(points)/len(points)) # 총점/인원
for point in points:
number=number+1 #학생의 번호 증가
if point>=60:
result='합격'
else:
result='불합격'
print(f'{number}번 학생: {point}점, {result}입니다.')
output
총점: 307
평균: 61.4
1번 학생: 90점, 합격입니다.
2번 학생: 25점, 불합격입니다.
3번 학생: 67점, 합격입니다.
4번 학생: 45점, 불합격입니다.
5번 학생: 80점, 합격입니다.
input
coffee=5
money= 30000
while money: # 조건식이 True이면 반복 실행, '' / 0 / False 이면 탈출
coffee = coffee - 1
money = money - 3000
print(f'남은 커피: {coffee}개, 잔액:{money}')
if not coffee: # '' / 0 이면 False
print('품절')
break # 반복문 종료
output
남은 커피: 4개, 잔액:27000
남은 커피: 3개, 잔액:24000
남은 커피: 2개, 잔액:21000
남은 커피: 1개, 잔액:18000
남은 커피: 0개, 잔액:15000
품절
while문은 True, False 형식의 반복문 입니다. 해당 반복문에서는 돈이 남아 커피가 품절 될때까지 반복되었지만
input
coffee=5
money= 9000
while money: # 조건식이 True이면 반복 실행, '' / 0 / False 이면 탈출
coffee = coffee - 1
money = money - 3000
print(f'남은 커피: {coffee}개, 잔액:{money}')
if not coffee: # '' / 0 이면 False
print('품절')
break # 반복문 종료
output
남은 커피: 4개, 잔액:6000
남은 커피: 3개, 잔액:3000
남은 커피: 2개, 잔액:0
다음과 같이 잔액이 0이 되면 while문에서 false(0원)가 되기때문에 커피가 남아 있더라도 종료가 되게됩니다.
오늘은 제어문에 대해 공부해 보았습니다.
다음 시간엔 함수에 대하 공부해 오도록하겠습니다. 그럼 오늘도