해당 시리즈의 모든 내용은 국비지원 부트캠프 '엘리스 AI 7기' 이호준 선생님의 AI 프리트랙 강의를 수강하며 수업 내용을 정리한 것 입니다.
어떠한 조건이나, 범위 내에서 명령을 반복적으로 수행하는 것
# for 문의 기본 구조
for 변수 in 시퀀스 :
<수행할 명령>
.
.
.
# 예제
sum = 0
for i in [1, 2, 3]:
sum = sum + i
length = 0
for x in 'abcdefg' : # len('abcdefg') = 7
length = length + 1
>>> nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> for i in nums :
print(i)
1
2
3
4
5
6
7
8
9
10
## 변수 mix에 있는 "쌀"의 개수를 세봅시다.
>>> mix = "쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰쌀씰쌀쌀씰쌀씰"
>>> count = 0
>>> for i in mix :
if i == "쌀" :
count += 1
>>> print(count)
300
시퀀스가 아니라 '횟수'만 알고 있는 경우에 사용한다.
연속된 숫자를 만들어주는 시퀀스 자료형
range(a, b) # a, a+1, a+2, ... , b-1
range(0, 9) # 0, 1, 2, 3, 4, 5, 6, 7, 8
range(5) # = range(0,5) = 0, 1, 2, 3, 4
'구간'으로 반복하는 방법으로, a이상 b미만의 수를 변수에 넣어가면서 명령을 수행한다.
# 기본 구조
for 변수 in range(a, b):
<수행할 명령>
.
.
# 예제
>>> a = [1]
>>> for i in range(2, 4): # 2, 3
a.append(i)
>>> print(a)
[1, 2, 3]
'횟수'로 반복하는 방법으로, b번 만큼 명령을 수행한다.
# 기본 구조
for 변수 in range(b):
<수행할 명령>
.
.
# 예제
>>> count = 0
>>> for i in range(10): # 0, 1, 2, ... , 9
count = count + 1
>>> print(count)
10
여기서 i는 range안의 값을 받아오는 곳이기 때문에 반드시 for문 안에서도 사용될 필요는 없다.
>>> for i in range(1, 11): # 1, 2, 3, ... 10
print(i)
1
2
3
4
5
6
7
8
9
10
>>> for i in range(5): # 0, 1, 2, 3, 4
print(i)
0
1
2
3
4
>>> for i in range(5):
print("I Love Python!")
I Love Python!
I Love Python!
I Love Python!
I Love Python!
I Love Python!
>>> for i in range(1, 20): # 1, 2, ... , 19
print("19 *", i, "=", 19*i)
19 * 1 = 19
19 * 2 = 38
19 * 3 = 57
19 * 4 = 76
19 * 5 = 95
19 * 6 = 114
19 * 7 = 133
19 * 8 = 152
19 * 9 = 171
19 * 10 = 190
19 * 11 = 209
19 * 12 = 228
19 * 13 = 247
19 * 14 = 266
19 * 15 = 285
19 * 16 = 304
19 * 17 = 323
19 * 18 = 342
19 * 19 = 361
조건으로 반복하는 방법으로, 조건이 'True'인 동안 명령을 수행한다.
# while문 기본 구조
while 조건 :
<수행할 명령>
.
.
.
# 예제
>>> i = 5
>>> while i > 0:
print(i)
i = i - 1
>>> print("Launch!")
5
4
3
2
1
Launch!
while문에서 조건이 항상 True라면 무한정 코드가 실행된다. 이처럼 빠져나올 수 없는 반복문을 '무한루프'라 한다.
>>> i = 1
>>> while i > 0 : # 항상 True
print(i)
i = i + 1
1
2
3
...
...
반복문을 탈출하는 역할로, if문에 조건을 걸어준 다음 break를 실행하면 된다.
>>> i = 0
>>> while True :
print("knock")
if i >= 3 :
break
i = i + 1
knock
knock
knock
knock
>>> i = 1
>>> while i < 11:
print(i)
i = i + 1
1
2
3
4
5
6
7
8
9
10
>>> j = 1
>>> while j <= 10 : # 1, 2, ..., 10
print(j, "년때 수감중입니다.")
j += 1
>>> print("감옥에서 석방되었습니다!")
1 년 째 수감중입니다.
2 년 째 수감중입니다.
3 년 째 수감중입니다.
4 년 째 수감중입니다.
5 년 째 수감중입니다.
6 년 째 수감중입니다.
7 년 째 수감중입니다.
8 년 째 수감중입니다.
9 년 째 수감중입니다.
10 년 째 수감중입니다.
감옥에서 석방되었습니다!
>>> i = 1
>>> while True :
print(i)
if i == 5:
print("i가 5에요!")
break
i += 1
1
2
3
4
5
i가 5에요!
>>> i = 1
>>> ans = 0
>>> while True:
ans = ans + i
if i > 9:
break
i += 1
>>> print(ans)
>>> n = int(input())
>>> for i in range(1, n+1):
print("*" * i)
i += 1
while
문을 이용해서, 0을 입력할 때 까지 입력을 받습니다. 0을 입력받았으면, 0을 입력한 바로 이전까지의 수들의 평균을 구합니다.
>>> my_data = []
>>> s = 0 # sum
>>> while True:
i = int(input())
if i == 0:
break
s += i
my_data.append(i)
>>> n = len(my_data)
>>> print(s / n)
20
10
0
15.0
이 문제 하나로 몇시간을 고민했는지 모르겠다. 고민하다가 결국에 질문했는데, 알고보니 무한루프와 break
문을 사용하면 충분히 해결 가능한 문제였다.
첫번째 난관은 데이터를 여러줄로 입력받는 것이었다.
처음에는 [input() for _ in range(n)]
의 방법까지 서치해봤는데, 이 방법은 사전에 내가 입력할 데이터의 개수를 먼저 정의해야 했다. 그렇기 때문에 이건 정답이 아닌 것이다. 해결방법은 무한루프 내에 input()
함수를 사용하여 계속해서 입력을 받게 하고, if
조건문을 활용해 내가 입력한 데이터가 0일 때 break
로 반복문을 빠져나오게 만들어야 했다.
두번째 난관은 평균의 분모에 필요한 '데이터의 개수'를 구하는 것이었다.
내 코드는 처음에 아래와 같았다...
>>> i = int(input()) # 입력받을 데이터
>>> s = 0 # sum
>>> n = 0 # number
>>> while i > 0:
s += i
n += 1
>>> print(s/n)
진짜 엉망진창..ㅠㅠ 비전공자 코딩초짜 다 티내는 허접코드 .. n
이라는 변수를 하나 더 선언해서 while
문 안에 넣고 반복문을 한바퀴 돌 때마다 1씩 늘어나게 했다. 이런식으로 내가 입력한 데이터의 개수를 세려고 했던 것이다. 이 부분은 반복문 전에 빈 리스트 my_data = []
를 선언해서 반복문 안에서 my_data.append(i)
로 데이터를 추가하고 len(my_data)
로 개수를 세면 해결된다.
이번에 틀렸으니까 다음에 맞으면 된다. 똑같이 실수하면 내가 공부를 안한 것이다.
화이팅..!