3-1. for 반복문

박성혜·2023년 3월 30일
0
post-thumbnail

파이썬 기초 문법이 궁금하신 분들은
제 벨로그의 파이썬 왕초보 시리즈를 추천 드립니다.

구글 코랩이나 주피터 노트북에서 직접 작성하며 풀어보세요.😊


1. 개념

  • while 반복문 : 몇 번 반복해야 되는지 모를 때
  • for 반복문 : 몇 번 반복해야 되는지 알 때

for문은 요청한만큼 순서대로 반복한다.
따라서 while문처럼 영원히 반복할 가능성이 없기 때문에 더 안정적이다.

기본 구조

for 변수 이름 in 반복하고 싶은 것(리스트, 튜플, 딕셔너리, 문자열 등):
	수행할 코드 1 
	수행할 코드 2

리스트 예시

일반적으로 for문에서는 변수로 i를 사용한다.

for i in ['마라탕', '쌀국수', '타코']

위 코드는
"리스트 안에 있는 것을 순서대로 변수 i에 넣어라" 라는 뜻이다.
그러니까

  • 첫 번째 : i = 마라탕
  • 두 번째 : i = 쌀국수
  • 세 번째 : i = 타코

가 되는 것이다.

문자열 예시

for i in "Hello":
	print(i)

H
e
l
l
o

H, e, l, l, o가 차례대로 변수 i에 들어갔다.

딕셔너리 예시

for i in {"이름" : "홍길동", "성별" : "남자", "나이" : 30}
	print(i)

이름
성별
나이

딕셔너리는 무조건 key값이 기준이기 때문에 key값만 나온 것을 확인할 수 있다.

2. range 함수

만약 0부터 9까지 반복하고 싶다면 어떻게 해야 할까?
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 를 해도 되지만
이 방법은 숫자가 많아질수록 번거롭다.

이때 사용하는 것이 range 함수다.
range 함수는 범위를 반복한다.

for i in range(10):
	print(i)

0
1
2
3
4
5
6
7
8
9

range(10)은 0부터 10 전까지를 뜻한다.

시작점을 따로 지정할 수도 있다.

for i in range(3, 10):
	print(i)

3
4
5
6
7
8
9

range(3, 10)은 3부터 10 전까지를 뜻한다.

일정한 간격으로 반복할 수도 있다.

for i in range(1, 10, 2):
	print(i)

1
3
5
7
9

range(1, 10, 2)는 1부터 10 전까지 2씩 증가를 뜻한다.

증가 부분에 -1을 사용하면 거꾸로 작성된다.

for i in range(10, 0, -1):
	print(i)
 
 10
 9
 8
 7
 6
 5
 4
 3
 2
 1

3. 이중 for문

이중 for문은 말 그대로 for문 안에 for문이 있는 것이다.
삼중, 사중도 가능하다.

이중 for문을 이용해서 2단부터 시작하는 구구단을 만들어보자.

for i in range(2, 10):
	for j in range(1, 10):
    	print('{} X {} = {}'.format(i, j, i*j))
  • for i in range(2, 10)
    2부터 10 전까지 i에 넣어라
    → i는 2, 3, 4, 5, 6, 7, 8, 9

  • for j in range(1, 10)
    1부터 10 전까지 j에 넣어라
    → j는 1, 2, 3, 4, 5, 6, 7, 8, 9

  • print('{} X {} = {}'.format(i, j, i*j))
    중괄호가 세 개, format함수 안에 있는 값도 세 개다. 차례대로 넣어주면 된다.
    → i X j = 'i와 j를 곱한 값' 이 출력된다.

4. 리스트 내포

정석적인 방법은 아니다.
리스트 안에 for문을 써서 리스트 안에 바로 값들이 들어가게 하는 방법이다.

box = [i for i in range(1, 6)]
print(box)

[1, 2, 3, 4, 5]
  • for i in range(1, 6)
    1부터 6 전까지 i에 넣어라
    → i는 1, 2, 3, 4, 5

  • [ i for i in range(1, 6)]
    리스트 안을 i로 채우는데 그 i는 for문에서 만든 1, 2, 3, 4, 5다

아래 코드는 if문 까지 넣었다.

box = [i for i in range(1, 6) if i % 2 == 0]
print(box)

[2, 4]

해석 :
1부터 6전까지 i에 차례대로 넣고
만약 i를 2로 나눈 나머지가 0이라면 (= i가 짝수라면)
i 를 리스트 안에 넣어라

따라서 1, 2, 3, 4, 5 중에서 짝수만 들어간
[2, 4]가 출력이 됩니다.

5. 사용 예시

1) 기초

box = ['박성혜', '리바이', '홍길동']

for name in box:
	print(name)
    
박성혜
리바이
홍길동

위에서 보듯 변수 이름은 아무거나 지정해도 된다.

익숙해지려면 이 글을 그냥 보기만 해서는 안되고
반드시 직접 코드를 작성하고 돌려봐야 한다.
(복붙하면 안돼요)

다음 코드를 보자.

box = [[1, 2], [3, 4], [5, 6]]

for i in box:
	print(i)

[1, 2]
[3, 4]
[5, 6]

순서대로 들어간 것을 알 수 있다.
여기서 변수를 두 개 만들어주면

box = [[1, 2], [3, 4], [5, 6]]

for i, j in box:
	print(i)

1
3
5

for i, j in box:
	print(j)

2
4
6

1이 i에, 2가 j에
3이 i에, 4가 j에
5가 i에, 6이 j에
순서대로 들어간 것을 확인할 수 있다.
연산도 할 수 있다.

box = [[1, 2], [3, 4], [5, 6]]

for i, j in box:
	print(i + j)
    
3
7
1

2) 빈 리스트 안에 데이터 넣기

이번에는 빈 리스트 안에 데이터를 넣는 for문을 만들어보자.

box = []

for i in range(1, 6):
	box.append(i)
    
print(box)

[1, 2, 3, 4, 5]

i 는 1, 2, 3, 4, 5
리스트 안에 하나씩 들어간 것을 확인할 수 있다.

위 방법은 정석적인 방법인데,
위에서 배운 리스트 내포를 사용하면 한 줄로 만들 수 있다.
(위에서 배운 내용을 토대로, 밑의 코드를 보지 말고 직접 작성해본 후에 답을 보세요.)

box = [i for i in range(1, 6)]
print(box)

[1, 2, 3, 4, 5]

3) 1~10 중 3의 배수만 넣기

box = [i*3 for i in range(1, 11)]
print(box)

[3, 6, 9]

4) 특정 숫자만 반복하기

box = [5 for i in range(1, 6)]
print(box)

[5, 5, 5, 5, 5]

i의 개수만큼 5가 들어간 것을 확인할 수 있다.

5) 리스트 안에 이중 for문 넣기

box = [i*j for i in range(2, 10) for j in range(1, 10)]

i 는 2, 3, 4, 5, 6, 7, 8, 9
j 는 1, 2, 3, 4, 5, 6, 7, 8, 9

2단부터 시작한 구구단의 값이 다 들어가있는 걸 확인할 수 있다.

6) 1부터 100까지 더하기

바로 전 글의 while문에서 풀었던 문제다.
while문은 이렇게 했다.

a = 0
b = 0

while a < 100:
	a += 1
    b += a

print(b)

5050

for문을 사용하면 훨씬 간단하다.

a = 0

for b in range (1, 101):
	a += b

print(a)

여기까지 파이썬 for 반복문에 대한 설명이었습니다.

수정이 필요한 부분이나 이해가 안 가는 부분이 있다면 언제든 말씀해주세요!^0^

다음 글에서는 실습 문제를 풀어볼게요.

그럼 이만
총총

profile
인공지능이 인공지능을 개발하면 인공지능일까

0개의 댓글

관련 채용 정보