for문의 구조
for 변수 in 리스트(튜플,문자열 등): 코드... 코드... ... |
for문은 다음에 배울 while문과 비슷한 반복문입니다.
일반적인 for문
for_list=['하나','둘','셋']
for i in for_list:
print(i)
# 1. for_list라는 리스트의 첫 번째 요소인 '하나'가 i 변수에 대입되고 print(i)에 의해 '하나'가 출력된다.
# 2. for_list라는 리스트의 두 번째 요소인 '둘'이 i 변수에 대입되고 print(i)에 의해 '둘'이 출력된다.
# 3. for_list라는 리스트의 세 번째 요소인 '셋'이 i 변수에 대입되고 print(i)에 의해 '셋'이 출력된다.
다양한 for문
for_list=[('하나',1),('둘',2),('셋',3)]
for firsth,second in for_list:
print(firsth,second)
# 방식은 위와 동일한데 for_list라는 리스트에 ()튜플을 이용하여 for문을 수행합니다.
for문과 if문 사용
학생의 점수가 80점 이상이면 "잘했어요!"를 출력하고 80점 이하이면 "아쉬워요!"를 출력하는 예제입니다.
point=[68,91]
for i in point:
if i>=80:
print("잘했어요!")
else:
print("아쉬워요!")
# 1. point 리스트의 첫 번째 요소(학생)의 점수는 68점으로 if문의 조건이 False이기 때문에 "아쉬워요!"가 출력됩니다.
# 2. point 리스트의 두 번째 요소(학생)의 점수는 91점으로 if문의 조건이 True이기 때문에 "잘했어요!"가 출력됩니다.
for문과 continue
continue는 "계속하다"라는 의미로 continue문을 만나면 다시 for문으로 돌아가게 됩니다.
글로는 이해하기 어려울 수 있으니 바로 예제를 진행해볼게요!
앞의 예제에서 80점 이상인 학생에게만 "잘했어요!"를 출력하겠습니다. (보기 편하게 점수까지 출력하겠습니다.)
point=[68,91,60,85]
for i in point:
if i<80:
continue
print("%d점수 잘했어요!"%i)
# 1. if 조건에서 80점 미만이면 continue문을 만나서 바로 for문으로 올라가게 됩니다.

# 1. 68은 continue문에 의해 for문으로 이동 (빨간색)
# 2. 91은 continue문에 걸리지 않고 출력 (초록색)
# 3. 60은 continue문에 의해 for문으로 이동 (파란색)
# 4. 85는 continue문에 걸리지 않고 출력 (보라색)
for의 친구 range 함수
range는 숫자 리스트를 자동으로 만들어주는 함수입니다. for문과 같이 정말 많이 쓰입니다!
# 1.
for i in range(10):
print(i)
# 2.
for i in range(1,11):
print(i)
※ 주의사항!
range(시작, 끝)
- 시작의 default는 0으로 위 코드 #1.처럼 적어주지 않으면 range(0,10)과 동일한 의미입니다.
- 끝 숫자는 포함되지 않습니다. 즉 끝 숫자-1 까지만 출력됩니다.
그래서 위 코드에서 #1.은 0~9까지 출력되고 #2.는 1~10까지 출력되는 것입니다!
range 함수의 활용
1~10까지 더하는 예제입니다.
tot=0
for i in range(1,11):
tot+=i
print(tot)
# 1. tot의 초깃값은 0입니다.
# 2. tot+=i는 tot=tot+i와 같은 코드입니다.
# 2-1. tot=tot(0)+i(1) ==> tot=1
# 2-2. tot=tot(1)+i(2) ==> tot=3
# 2-3. tot=tot(3)+i(3) ==> tot=6
# 2-4. tot=tot(6)+i(4) ==> tot=10
# 10까지 반복
# 3. 결과는 1부터 10까지 더한 55가 출력됩니다.
Quiz) 1~10까지 곱하는 코드를 작성해보세요! 힌트: 곱하기는 * 입니다.
tot=1 # 곱하기이므로 초깃값을 1로 셋팅!
for i in range(1,11):
tot=tot*i #tot*=i 동일한 코드입니다.
print(tot)
이중 for문 (구구단)
이중 for문을 가장 이해하기 쉬운 구구단을 만드는 예제입니다.
프로그래밍을 처음 접하시는 분은 이중 for문에서 혼란이 올 수 있는데 최대한 쉽게 설명드릴게요!
for i in range(2,10):
for j in range(1,10):
print(i,"*",j,"=",i*j)
print(i,"단 종료!")
위 코드에서 for i in range(2,10) 코드가 제일 먼저 있으니까 2~9까지 출력이 될 것입니다.
왜 2~9까지 출력인지 이해가 안 가시는 분은 위 range 함수의 활용을 다시 한번 확인해주세요!
두 번째 라인에는 for j in range(1,10) 코드가 있으니 1~9까지 출력될 것입니다.
그럼 flow를 작성해보겠습니다.
# i=2 j=1 : i(2)*j(1)=i*j(2x1) 즉 "2*1=2" 가 출력됩니다.
# i=2 j=2 <j가 1증가됨>: i(2)*j(2)=i*j(2x2) 즉 "2*2=4" 가 출력됩니다.
# i=2 j=3 <j가 1증가됨>: i(2)*j(3)=i*j(2x3) 즉 "2*3=6" 이 출력됩니다.
# i=2 j=4 <j가 1증가됨>: i(2)*j(4)=i*j(2x4) 즉 "2*4=8" 이 출력됩니다. (5,6,7,8 반복이라서 9로 넘어가겠습니다.
# i=2 j=9 <j가 1증가됨>: i(2)*j(9)=i*j(2x9) 즉 "2*4=18" 이 출력됩니다.
# j가 9까지 모두 출력됐기 때문에 for j in range(1,10) 코드(for문)는 종료되고 print(i,"단 종료!")로 인해서 "2단 종료!"가 출력됩니다.
# i=3 j=1 <i가 1증가되고 j는 다시 1부터 시작>: i(3)*j(1)=i*j(3x1) 즉 "3*1=3" 이 출력됩니다.
# i=3 j=2 <j가 1증가됨>: i(3)*j(2)=i*j(3x2) 즉 "3*2=6" 이 출력됩니다.
# i=3 j=3 <j가 1증가됨>: i(3)*j(3)=i*j(3x3) 즉 "3*3=9" 가 출력됩니다.
# 계속 반복되면서 9단까지 출력됩니다!
이중 for문이 잘 이해가 안되시는 분은 댓글에 남겨주세요! (저도 처음 공부할 때 이중 for문이 가장 어려웠어용...)
리스트 내포 사용
리스트 안에 for문을 포함하는 리스트 내포를 사용하면 직관적인 코드를 만들 수 있습니다.
리스트 내포의 구조 [표현식 for 변수 in 반복 가능한 객체 if 조건] |
num=[1,2,3]
result=[]
#1.
for i in num:
result.append(i*2)
print(result)
#2.
result=[i * 2 for i in num]
print(result)
위 코드에서 #1.과 #2.는 같은 코드인데 #2와 같이 한 줄로 코드를 작성할 수 있습니다.
2개 이상의 for문을 리스트 내포를 사용하여 만들 수 있지만 너무 복잡하여 넘어가도록 하겠습니다.
궁금하신 분은 댓글에 남겨주시면 알려드리겠습니다~!
'Python' 카테고리의 다른 글
# 파이썬 - 8 (기초5) IF문 (0) | 2021.05.19 |
---|---|
# 파이썬 - 7 (기초4) (0) | 2021.05.15 |
# 파이썬 - 6 (기초3) (0) | 2021.05.11 |
#파이썬 - 5 (기초2) (3) | 2020.07.05 |
#파이썬 - 4 (기초) (0) | 2020.07.04 |