728x90

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문을 리스트 내포를 사용하여 만들 수 있지만 너무 복잡하여 넘어가도록 하겠습니다.

궁금하신 분은 댓글에 남겨주시면 알려드리겠습니다~!

728x90

'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

+ Recent posts