for [변수] in [문자열, 리스트, 튜플]:
(들여쓰기)[수행부분]
for [변수1] in [문자열1, 리스트1, 튜플1]:
[수행부분]
for [변수2] in [문자열2, 리스트2, 튜플3]:
[수행부분]
arr = [1, 2 ,3 ,4, 5]
for i in arr:
print(i)
1
2
3
4
5
break (for문 밖으로 나가고 싶을 때)
아래와 같이 어떤 문자열 "BlockDMask"가 있다고 했을때, 첫번째 k의 위치를 가지고 오고싶다
이럴때 break를 사용하면 됩니다.
index = 0
s = "BlockDMask"
for a in s:
if a == 'k':
break # 'k'를 찾았으니 for문에서 나와랏!
index = index + 1
print(index) # 'k'가 첫번째로 존재하는 위치 출력
cs
이런식으로 사용하게 되면 첫번째 'k'가 나온 후에는 for 반복문을 바로 빠져나오게 됩니다.
continue (for 문의 처음으로 바로 올라가고 싶을 때)
for [변수1] in [문자열1, 리스트1, 튜플1]:
[수행부분1]
특정조건:
continue
[수행부분2]
[수행부분3]
이렇게 특정조건을 만족해서 continue로 들어가게 되면 수행부분2, 수행부분3을 거치지 않고 바로 for 문으로 올라가서
다음 문자열을 변수에 할당받아서 for 반복문을 수행하게 됩니다.
예를 들면
"키가 170이하인 친구들만 출력해라"라는 요청이 왔을때 키가 170 초과인 경우에는 print(a)까지 내려가지 않고
다시 for 반복문으로 올라가서 다음친구의 키를 가지고 와라. 할 수 있습니다.
student = [180, 170, 164, 199, 182, 172, 177]
for a in student:
if a > 170:
continue # 키가 170보다 크면 continue
print(a)
Colored by Color Scripter
cs
이렇게 되었을때 결과값은 아래와 같습니다.
170
164
▶ 사전지식 range(a, b)
1부터 100까지 리스트를 따로 만들지 않고 range이라는 함수를 통해서 for문에서 1~100을 나타낼 수 있습니다.
for x in range(0,10):
print(x)
cs
for 반복문에서 range(a, b)는 a에서부터 b-1까지의 숫자들을 하나하나 for문의 [변수]에 집어 넣어 줍니다.
위 예제를 보면 range(0,10)이라고 하면 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 까지의 숫자를 x에 넣어줍니다.
▶ 예제1) 반복문 for를 통해서 1부터 100까지 더해보자.
result = 0
for a in range(1,101): #1 ~ 100
result = result + a
print(result)
cs
이런식으로 ragne를 이용해서 1~100까지 숫자를 a로 돌리고
result에 계속 더해주는 방식으로 구현할 수 있습니다.
출력 결과는 5050이 나옵니다.
▶ 예제2) 반복문 for와 continue를 통해서 1부터 100까지 리스트가 있을때 홀수만 더해보자.
일단 홀수인지 짝수인지는 2로 나누었을때 나머지를 통해서 알 수 있습니다.
어떤 수를 2로 나누었을때 나머지가 1이라면 그 어떤수는 홀 수 입니다.
파이썬에서 어떤수 x를 나누어서 나머지를 구하는 기호는 "%" 입니다.
일단 우리는 이런식으로 if를 이용해서 구할 수 있습니다.
result = 0
for a in range(1,101): #1 ~ 100
if a % 2 == 1: #2로 나누었을때 나머지가 1
result = result + a
print(result)
cs
하지만 continue를 이용해서 이런 방식으로도 사용할 수 있죠.
result = 0
for a in range(1,101): # 1 ~ 100
if a % 2 == 0: # 짝수일때 continue
continue
result = result + a
print(result)
cs
▶ 예제3) 반복문 for와 break를 통해서 1부터 100까지 리스트가 있을때 더하다가 결과값이 100이 넘었을때 멈추기!
result = 0
for a in range(1,101): # 1 ~ 100
result = result + a # a를 더해주고
if result > 100: # result가 100이 넘었을때
print(a) # 그때의 a값을 출력
break
print(result)
cs
결과값
14
105
이런식으로 나오게 됩니다.
1부터 100까지 쭉 더하다가 최초로 덧셈의 결과가 100이 넘을때의 a는 14이고 결과값이 105가 딱 나오게 됩니다.
break를 이용해서 그 이후에는 반복문이 돌지 않도록 합니다.
만약 break를 쓰지 않으면?
1
2
3
4
5
6
result = 0
for a in range(1,101): # 1 ~ 100
if result <= 100:
result = result + a
print(result)
cs
이렇게 하게 되면 결과값이 100이 넘었는데도 의미없이 반복문은 계속 계속 돌겠죠? 그만큼 비용을 낭비하게 됩니다.