또 다시 왔습니다 여러분~
혹시 퀴즈 풀어보셨나요?
temperature = int(input("오늘의 기온은 몇도 인가요? = "))
if 20 <= temperature < 30:
print("따뜻합니다.")
elif 10 <= temperature < 20:
print("쌀쌀하네요. 겉옷을 챙기세요.")
elif temperature < 10:
print("춥습니다. 따뜻하게 입고 나가세요.")
이겁니다.
이렇게 코드를 작성하지 않아도 다른 방법으로도 나오게 할 수 있습니다.
조건에 맞게 출력이 잘 된다면 정답입니다.
박수! 👏👏👏👏👏👏👏👏👏
오늘은 반복문에 대해서 배울 겁니다.
이전 글에서 while 에 대해 살짝 보고 넘어갔죠?
오늘은 while 뿐만 아니라 for 반복문에 대해서도 알아보겠습니다.
먼저 봤던 while 에 대해 조금만 더 설명 드리고 for 반복문으로 넘어가겠습니다.
while은 영어 뜻으로도 아시겠지만
" ~동안 "
이라는 뜻입니다.
얼굴 동안 아닙니다.
그럼 while문을 이용해 코드를 작성해 볼게요.
이번 상황극은 회사로 해볼까요?
김덕순 학생이 드디어 회사에 입사했습니다.
그런데...
빅파이 대리 : " 어이 김사원! 자네 입사할 때 ' 나의 장점 ' 항목이 비어있는데 파이썬으로 써와! "
우리 학교 다닐 때 선생님이 내준 깜지 작성할 때 쓴 기술을 이용해야겠네요??
하지만 우리는 직장인!
멋있게 반복문으로 자기소개란을 작성해봅시다.
주의❗❗❗❗❗❗❗❗❗❗❗❗❗❗❗❗❗
지금 작성되는 코드는 무한 반복입니다.
실행해보실 거면 실행하셔도 괜찮습니다.
다만 ctrl + c 로 꼭 무한 반복에서 빠져나와주세요.
while True:
print('나는 멋있어!')
>>> 나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
...
이렇게 자의식 과잉인 것 같은 프로그램이 실행됩니다.
저기.. 저는 적당히 멋있고 싶은데... 10번 정도만 멋있고 싶은데 어떻게 해야하나요?
Don't worry about that!
우리가 반복 횟수를 지정해주면 되는 겁니다.
볼까요?
x = 0
while x < 10:
print('나는 멋있어!')
x += 1 # += 이건 매 반복 때 1을 더한다는 겁니다.
# 계속 반복해주면 0 -> 1 -> 2 -> 3 ->...->9 까지 가겠죠?
>>> 나는 멋있어! # x = 0 번째
나는 멋있어! # x = 1 번째
나는 멋있어! # x = 2 번째
나는 멋있어! # x = 3 번째
나는 멋있어! # x = 4 번째
나는 멋있어! # x = 5 번째
나는 멋있어! # x = 6 번째
나는 멋있어! # x = 7 번째
나는 멋있어! # x = 8 번째
나는 멋있어! # x = 9 번째
이렇게 x 변수에 0을 넣고 x 가 10이 되기 전까지 출력을 해주는 겁니다.
빅파이 대리가 엄청 만족해 합니다.
만족한 줄 알았던 빅파이 대리가 김덕순 사원에게 다가옵니다.
빅파이 대리 : " 자네는 멋있는 친구구만? 근데 나는 while 보다는 for 가 좋은데 for 반복문으로 다시 써주겠나? "
부들부들...
for 반복문은 아직 배우지 않은 김덕순 사원은 구글링으로 찾아보기 시작합니다.
for i in range(0, 10):
print("나는 멋있어!")
>>> 나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
나는 멋있어!
구글에서 찾아보니 이렇게 작성하라고 하는 군요?
근데 저게 무슨 뜻인지 모르겠습니다.
알아볼까요?
for [일회성 변수] in [범위]:
>>> [범위] 안에 있는 데이터들이 [일회성 변수]에 저장된다고 생각하면 된다.
이런 구조인 것 같습니다.
코드로 더 세밀하게 알아보죠.
for i in range(0, 10):
print(i)
>>> 0
1
2
3
4
5
6
7
8
9
어느정도 이해가 가시나요?
근데
range(0, 10)
이건 뭔가요??
0 ~ 9 까지의 범위를 나타내 주는 겁니다.
코드로 확인 해볼까요?
a = range(0, 10)
print(a)
>>> range(0, 10)
이거는 왜 이렇게 나올까요?
여기서 저 범위 안의 숫자를 보고싶다면
list() 함수를 사용하여 범위에 있는 숫자들을 리스트로 저장해주면 됩니다.
a = list(range(0, 10))
# 어렵지 않아요.
# 그냥 이렇게 감싸주면 됩니다.
print(a)
print(a[0:5])
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4]
와우!
이렇게 깔끔하게 정리가 되었네요!!
앞으로 리스트 함수는 굉장히 많이 사용되기 때문에 잘 알아두시고 따로 공부해보세요.
그리고 이 글에서도 리스트는 수도 없이 많이 쓰이게 됩니다. ㅎㅎ...
나중에 더 자세히 설명 드리겠습니다.
이제 빅파이 대리한테 가져다 줍니다.
잘했다는 군요.
반복문을 배우면 가장 먼저 배우는 것이 구구단 입니다.
(저는 그랬어요...)
구구단 같이 한번 만들어 볼까요??
간단하게 구구단 2단을 만들어 보겠습니다.
for i in range(2, 3): # range(2, 3) 은 2만 들어가있다.
for j in range(1, 10): # range(1, 10) 은 1~9 까지만 들어가있다.
print("{} x {} = {}".format(i, j, i * j))
>>> 2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
음... for 가 두개가 들어가 있네요?
이걸 말로 한번 설명을 해볼까요???
range(2, 3) 안에있는 숫자 2 를 순서대로 i에 넣어가면서 반복 할거야
i 에 들어온 숫자들을 기준으로 다음 for 반복문을 진행할거야
range(1, 10) 안에있는 숫자 1 ~ 9 를 순서대로 j에 넣어가면서 반복 할거야
j 에 들어온 숫자들을 기준으로 print 할거야
i 에는 2가 들어가있는 상태이고 i 를 기준으로 j 를 반복 할거야
------------
i = 2, j = 1
i = 2, j = 2
i = 2, j = 3
i = 2, j = 4
...
i = 2, j = 8
i = 2, j = 9
------------
반복문 끝!
이런 프로세스로 이루어 지는 겁니다.
이해가 안되실 수 있는데 직접 해보시는 것을 추천 드립니다.
이제는 구구단 2단과 3단을 같이 출력해 볼까요?
위의 코드를 적극 활용하면 됩니다.
for i in range(2, 4): # range(2, 3) 은 2만 들어가있다.
print("-------------")
# 2단과 3단 출력을 나누기 위한 선입니다.
# 선 없이 그냥 공백으로 나누고 싶다면 print("") 이렇게 써주면 됩니다.
for j in range(1, 10):
print("{} x {} = {}".format(i, j, i * j))
>>> -------------
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
-------------
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
자 어떤가요??
이제 여러분은
뭐야이거?? 그럼 숫자만 바꿔주면 9단 까지도 만들 수 있는 거 아닌가??
라고 생각하실 겁니다.
네 맞습니다. 숫자만 바꿔주면 됩니다.
이제 코드 보면 어느정도 느낌이 확~오죠??
이번에는 좀 재밌는 구구단을 해보겠습니다.
바로바로 역 구구단입니다.
1 x 9 = 9
1 x 8 = 8
1 x 7 = 7
...
이런 식으로 출력해봅시다.
for i in range(2, 4): # range(2, 3) 은 2만 들어가있다.
print("-------------")
for j in range(9, 0, -1):
print("{} x {} = {}".format(i, j, i * j))
>>> -------------
2 x 9 = 18
2 x 8 = 16
2 x 7 = 14
2 x 6 = 12
2 x 5 = 10
2 x 4 = 8
2 x 3 = 6
2 x 2 = 4
2 x 1 = 2
-------------
3 x 9 = 27
3 x 8 = 24
3 x 7 = 21
3 x 6 = 18
3 x 5 = 15
3 x 4 = 12
3 x 3 = 9
3 x 2 = 6
3 x 1 = 3
range(9, 0, -1)
이게 뭘까요??
9 부터 1 까지 -1 씩 감소하면서 범위를 만들어주세요.
라는 뜻입니다.
a = list(range(0, 9, 2))
b = list(range(20, 2, -3))
c = list(range(0, 50, 5))
print(a)
print(b)
print(c)
>>> [0, 2, 4, 6, 8]
[20, 17, 14, 11, 8, 5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]
역순으로 숫자를 넣고 싶으시면 반드시 ' -3 ' 이런식으로 마이너스를 써줘야 합니다.
뭔가 정신없이 쓰다보니 내용이 좀 중구난방일 수 있습니다.
먼저 죄송하다는 말씀드리고 오늘도 봐주셔서 감사합니다.
구구단 꼭 만들어보세요!
빠이빠이~