기본 구조
for 변수 in 컨테이너(list + tuple + dictionary): 수행할 문장1 수행할 문장2 ...
list + for문
>>> my_for = [1, 2, 3]
>>> for x in my_for: ## list의 my_for 대입
print(x) ## 출력
1
2
3
tuple + for 문
>>> my_for = [(1,2), (3,4), (5,6)]
>>> for (one, two) in my_for:
print(one + two)
3
7
11
dictionary + for 문
>>> my_for = {'학생1' : 50, '학생2' : 60, '학생3' : 70}
>>> for key, value in my_for: ## 함수를 안사용하니 error 발생
print(key, value)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
for key, value in my_for():
TypeError: 'dict' object is not callable
>>> for key, value in my_for.items():
print(key, value)
학생1 50
학생2 60
학생3 70
>>> for key in my_for.keys():
print(key, end=' ')
학생1 학생2 학생3
>>> for value in my_for.values():
print(value, end=' ')
50 60 70
for 문에 자주 사용되는 함수
특징특정 조건에서만 코드를 실행하지 않고 다음으로 이동하고 싶을 때
ages = [17, 25, 5, 35]
num = 0
for age in ages:
num = num+1
if age < 20: ## 20세 이하 만
continue ## 조건에 맞는걸 제외
print("%d번 사람 성인 입니다." % num)
= RESTART: C:/Users/oxlip/AppData/Local/Programs/Python/Python39/for_continue.py
2번 사람 성인 입니다.
4번 사람 성인 입니다.
range 함수는 연속적인 숫자 객체를 만들어서 반환해주는 함수
>>> my_range = range(5)
>>> print(type(my_range))
<class 'range'>
>>> print(my_range)
range(0, 5)
>>> for val in my_range:
print(val)
0
1
2
3
4
인수 개수에 따른 사용법
- range(갯수) : 0부터 시작. n개 값 생성
- range(시작, 끝) : 끝은 포함 안됨
- range(시작, 끝, 증가분) : '스텝'이라고 함. 음수도 가능
>>> for val in range(5):
print(val)
0
1
2
3
4
>>> for val in range(3,6):
print(val)
3
4
5
>>> for val in range(1, 11, 4): # 1에서 11전까지 4씩 증가
print(val)
1
5
9
대표적으로 구구단
for문을 2개 이상 사용할때
for 항목1 in 반복가능객체1 (if 조건문1)
for 항목2 in 반복가능객체2 (if 조건문2)
for 항목3 in 반복가능객체3 (if 조건문3)
...
...
for x in range(2,10):
print("-"+str(x)+"단-")
for y in range(1, 10):
print(x, "X", y, "=", x*y)
print("\n")
= RESTART: C:/Users/oxlip/AppData/Local/Programs/Python/Python39/for_continue.py
-2단-
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단-
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
.
.
.
#응용
#출석번호가 1 2 3 4, 앞에 100을 붙이기로 함 ->100, 101, 102, 103
students = [1,2,3,4,5]
print(students)
students = [i+100 for i in students] #이런식으로 for문을 선언할수있다
print(students)
#학생 이름을 길이로 변환
students = ["Iron man", "Thor", "black widow"]
students = [len(i) for i in students]
print(students)
#학생 이름을 대문자로 변환
students = ["Iron man", "Thor", "black widow"]
students = [i.upper() for i in students]
print(students)
# 출력값
[1, 2, 3, 4, 5]
[101, 102, 103, 104, 105]
[8, 4, 11]
['IRON MAN', 'THOR', 'BLACK WIDOW']