for문의 형태
for 변수 in [리스트 값1, 리스트 값2, 리스트 값3 .....]
실행문1
실행문2
.
.
.
for 변수 in [튜플 값1, 튜플 값2, 튜플 값3 .....]
실행문1
실행문2
.
.
.
for 변수 in [문자열 값1, 문자열 값2, 문자열 값3 .....]
실행문1
실행문2
.
.
.
for문을 사용하면 리스트 또는 튜플과 문자열을 변수에 순서대로 대입할 수 있다.
예문
a = [1, 2, 3, 4, 5]
for i in a : # 변수 i에 a리스트값을 순서대로 하나씩 대입
print(i) # 현재 들어있는 값을 출력 후 다시 2번째 값으로 반복..3반복..4반복..5반복..
# 결과
1
2
3
4
5
for문 안에서 사용할 변수를 선언 후 in a (리스트[1, 2, 3, 4, 5])를 해주니
리스트의 값을 차례대로 출력하는 프로그램이 되었다. 재미있는 반복문이다.
이 방법을 사용해 1부터 10까지 모든 수를 더하는 프로그램을 만들어 보자
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 1부터 10까지 있는 리스트 a
addnumber = 0 # 더한 값을 넣어줄 변수
for i in a : # 변수 i에 리스트a를 순서대로 대입
addnumber = addnumber + i # 변수 addnumber에 리스트a를 더함
print(addnumber)
# 결과
55
변수 i 에 리스트 a 값을 차례차례 받아와
addnumber에 차곡차곡 더해주면
addnumber는 결과적으로 1부터 10까지 모든 수를 더한 값이 된다.
리스트 a에서 1부터 10까지 일일이 써넣지 않아도 되는 방법이 있다.
range(~~이상부터, ~~미만까지)
a = range(1,11)
for i in a :
print(i)
# 결과
1
2
3
4
5
6
7
8
9
10
만약 1부터 10까지 있는 리스트를 만들고 싶을 때 범위 함수인 range를 이용해 시간을 줄일 수 있다.
range(시작번호, 끝번호 + 1) 괄호 안에 첫 번째로 오는 숫자부터 시작하여 두 번째로 오는 숫자 미만까지
자동으로 리스트를 만들어 주는데 쉽게 생각해서 끝낼 숫자에 +1을 해주면 된다.
이를 이용하여 1부터 50까지 홀수, 짝수를 구분하는 프로그램을 만들어 보자
a = range(1,51) # 1부터 50까지 가진 리스트 a
for i in a : # 리스트 a를 변수 i에 차례로 대입
if i % 2 == 0: # 만약 i를 2로 나눴을때 나머지가 0이면
print("숫자 %d는 짝수입니다." % i) # 짝수
else: # 아니면
print("숫자 %d는 홀수입니다." % i) # 홀수
# 결과
숫자 1는 홀수입니다.
숫자 2는 짝수입니다.
숫자 3는 홀수입니다.
숫자 4는 짝수입니다.
숫자 5는 홀수입니다.
숫자 6는 짝수입니다.
숫자 7는 홀수입니다.
숫자 8는 짝수입니다.
숫자 9는 홀수입니다.
숫자 10는 짝수입니다.
.
.
.
.
.
결과 중에 짝수나 홀수중 한 가지만 구하고 싶을 때 사용하는 것이 또 있다.
continue, break
a = range(1,51)
for i in a :
if i % 2 == 1: continue # 만약 i를 2로나눠서 나머지가 1이 나오면 반복문 처음으로 돌아감
print("숫자 %d는 짝수입니다." % i)
# 결과
숫자 2는 짝수입니다.
숫자 4는 짝수입니다.
숫자 6는 짝수입니다.
.
.
.
a = range(1,51)
for i in a :
if i % 2 == 0: continue # 만약 i를 2로나누었을 때 나누어 떨어지면 for문 처음으로 돌아감
print("숫자 %d는 홀수입니다." % i)
# 결과
숫자 1는 홀수입니다.
숫자 3는 홀수입니다.
숫자 5는 홀수입니다.
숫자 7는 홀수입니다.
숫자 9는 홀수입니다.
.
.
.
while문에서 사용했던것과 마찬가지로 continue는 조건을 만족하면 반복문의 처음으로 돌아간다.
덕분에 아래 print문을 지나치지 않음으로 한가지 숫자만 걸러 낼 수 있다.
for문으로 구구단 하기
구구단은 결국 아래의 모양의 반복과 같다.
숫자 1(i1) |
X |
숫자 2 (i2) |
i1에는 1번숫자, i2에는 2번숫자를 차례로 대입하면 파이썬에게 구구단을 시켜 볼 수 있다.
firstnumber = range(2,11) # 구구단 단수 (2단부터 10단까지)
secondnumber = range(1,11) # 곱해줄 숫자
for i1 in firstnumber :
for i2 in secondnumber :
print( i1 * i2 , end = " ") # end = " "로 결과값이 다음줄로 넘어가지 않고 한칸 띄우고 출력됨
print(' ') # 두번째 for문 반복이 끝나면 공백을 출력함으로써 줄바꿈
# 결과
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
먼저 i1을 반복하는 for은 첫 숫자 2를 가져오고
이 속에서 i2를 반복하는 for은 1,2,3 ....순서대로 가져오며 반복한다. 이게 끝나면 다시 i1를 반복하는 문장이 반복을 시작함으로 단수에 맞춰 구구단을 시키는것이 가능하게 된다.
'IT > 파이썬3 공부' 카테고리의 다른 글
[파이썬 기초] class와 메서드 (0) | 2020.05.23 |
---|---|
[파이썬 기초] 함수선언 def 예약어의 사용법 (0) | 2020.05.19 |
[파이썬 기초] while 반복문 기초 (0) | 2020.05.13 |
[파이썬 기초] if 조건문 기본 (0) | 2020.05.11 |
[파이썬 기초] 딕셔너리와 관련함수 (0) | 2020.05.10 |
최근댓글