if문 만으로는 해결할수 없을 때?
- 실행하는 기능은 동일하고 요소의 index만 다를 때!
- 반복해야하는 list의 총 길이를 알지 못할 때!
👉🏻 For loops 사용!
For 반복문
- list, tuple, set 및 다른 자료구조의 요소를 한번에 하나씩 가지고
원하는 로직을 실행하도록 해줌for element in list: do_something_with_element
: list의 요소를 한번에 한개씩 가지고 for문 내 코드를 실행한다
my_list = [int(s) for s in input().split()]
## 아직 for loop을 배우지 않았으므로 if 문을 사용해서 해결.
if (my_list[4] % 2) == 1:
del my_list[4]
if (my_list[3] % 2) == 1:
del my_list[3]
if (my_list[2] % 2) == 1:
del my_list[2]
if (my_list[1] % 2) == 1:
del my_list[1]
if (my_list[0] % 2) == 1:
del my_list[0]
print(my_list)
my_list = [int(s) for s in input().split()]
odd_numbers = [ ]
## 먼저 홀수값들을 골라내서 리스트를 만들고
for element in my_list:
if (element % 2) == 1:
odd_numbers.append(element)
## 홀수값들을 하나 하나 기존 리스트에서 지워준다
for odd_number in odd_numbers:
my_list.remove(odd_number)
print(my_list)
for문으로 표현하면 훨씬 간결하게 표현할 수 있다!
오히려 for문을 알고나니, if문 만으로 문제를 푸는게 더 힘들었다
Break
- 도중하차 하고싶을 때
- for문을 끝까지 진행할 필요 없이, 중간에서 멈추고 싶을 때 사용!
- break문이 실행되면, 다음 iteration으로 넘어가지 않고 for문에서 빠져나오게 된다
Continue
- break 급으로 완전히 빠져나오고 싶지는 않지만 다음 요소,
즉 다음 iteration으로 넘어가고 싶을 때 continue문 사용
- 구구단 문제를 풀 때, 반복된 작업을 할 때 필요!
: ex) 년도별로 일어난 일들을 출력할 때,
년도별로(큰 for문) 일어난 일들(작은 for문) 순으로 반복 실행numbers1 = [1, 2, 3, 4, 5] numbers2 = [10, 20, 30, 40, 50] - for num1 in numbers1: for num2 in numbers2: print(f"{num1} * {num2} == {num1 * num2}")
range
for in range(start_value, end_value, step)
- 시작 조건, 종료조건, 스텝(생략 가능)
- 옵셔널 인자 step을 사용해서 반복문의 증가 폭 조절 가능하다
- range 사용 X
our_list = []; for i in range(0, 5): our_list.append(i) - 결과 [0,1,2,3,4]
- range 사용
our_list = [] for i in range(0, 10, 2): our_list.append(i) - 결과 [0,2,4,6,8]
- count backwards
our_list = [] for i in range(10, 0, -2): our_list.append(i) - 결과 [10,8,6,4,2]
👉🏻 특정 조건문이 True일 동안 코드블록 반복한다
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
<수행할 문장N>
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
<수행할 문장N>
else:
<while문이 종료된 후 수행할 문장1>
<while문이 종료된 후 수행할 문장2>
<while문이 종료된 후 수행할 문장3>
...
<while문이 종료된 후 수행할 문장N>
예를 들면 👇🏻👇🏻 while문이 종료되고 난 뒤 number 변수의 값 출력 가능하다
python
number = 0
while number <= 10:
print(number)
number += 1
else:
print(f"while 문이 끝나고 난 후 의 number : {number}")
> 0
1
2
3
4
5
6
7
8
9
10
while 문이 끝나고 난 후 의 number : 11
values
라는 함수를 속성으로 가지는데, 이는 value들을 리턴한다.