파이썬 코칭스터디 1기 - 모두를 위한 파이썬(PY4E) 5강 (반복문)
26161 단어 pythonboostcourseboostcourse
5. 반복문
컴퓨터는 사람보다 비슷한 작업을 반복하는 일을 더 잘한다. 반복이 매우 흔한 일이어서, 파이썬에서 반복 작업을 쉽게 하도록 몇 가지 반복문 기능을 제공한다.
➰1. while문 (indefinite loop;불확정 루프)
n = 5
while n > 0: # n이 0보다 크면 반복
print(n)
n = n - 1
print('Blastoff!')
print(n)
# 결과
5
4
3
2
1
Blassoff!
0
- while문의 조건이 참 값을 가지는 경우 while문 아래 들여쓰기 되있는 문장들은 조건이 거짓이 될 때까지 코드를 반복해서 작동한다.
컴퓨터는 사람보다 비슷한 작업을 반복하는 일을 더 잘한다. 반복이 매우 흔한 일이어서, 파이썬에서 반복 작업을 쉽게 하도록 몇 가지 반복문 기능을 제공한다.
n = 5
while n > 0: # n이 0보다 크면 반복
print(n)
n = n - 1
print('Blastoff!')
print(n)
# 결과
5
4
3
2
1
Blassoff!
0
- while문의 조건이 참 값을 가지는 경우 while문 아래 들여쓰기 되있는 문장들은 조건이 거짓이 될 때까지 코드를 반복해서 작동한다.
n이 0보다 크면 while문은 계속 실행한다. n=5이기 때문에 while문의 조건에 만족하므로 반복문을 실행한다. n=0이 되면 while문 조건에 만족하지 않으므로 반복문을 빠져나오게 된다.
while 다음
: (콜론)
을 써주는 것을 잊지말자!
- 루프(Loop) 제어하기 - break
while True:
line = input('> ')
if line == 'done': # 만약 line이 'done'이면
break # 반복문 빠져나오기
print(line)
print('Done!')
# 결과
# > hello there로 입력
# hello there로 출력됨
# > finished로 입력
# finished로 출력됨
# > done로 입력
# Done!으로 출력됨
- 반복문을 사용하다가 어떤 조건에서는 반복문을 종료하고 싶을 때가 있다. 그 경우
break
문을 사용하면 된다. - 루프가 break를 만나게되면 루프는 실행이 종료되고 while문이 끝난 뒤의 코드를 찾아 실행한다.
- continue
- 때때로 루프를 반복하는 중간에서 반복을 끝내고, 다음 반복으로 즉시 점프하고 싶을 때가 있다. 현재 반복 루프 전체를 끝내지 않고 다음 반복으로 건너뛰기 위해
continue
문을 사용한다.
while True:
line = input('> ')
if line[0] == '#' : # 입력단어 첫 번째가 #이라면
continue # 다음 코드를 실행 하지않고 loop 시작점으로 감
if line == 'done' :
break
print(line)
print('Done!')
# 결과
# > hello there 입력
# hello there로 출력
# # don't print this
# > print this! 입력
# print this!로 출력
# > done 입력
# Done!
- 위의 코드에서 '#'을 입력하게 되면 continue를 만나게 되고 continue는 loop의 시작점으로 다시 돌아가서 loop를 실행하게 됩니다.(아무것도 출력하지 않음)
- done을 입력하게 되면 break를 만나게 되고 break는 loop끝나는 점 바로 다음에 오는 코드를 실행하게 됩니다. (Done! 출력)
while문은 조건문이 거짓이 되기 전까지 계속 실행 되기 때문에 "불확정 루프" 라고 부른다.
코드의 길이가 길어지고 종료 조건이 복잡해지면 코드가 정말 종료할 수 있는지 불분명 해진다. while문을 이용해 많은 것을 할 수 있지만 대부분의 반복문을 만들기 위해 확정 루프라고 불리는 것을 사용한다.
➿ 2. for문 (definite loop; 확정 루프)
- 단어의 리스트, 파일의 줄, 숫자 리스트 같은 사물의 집합에 대해 루프 반복
- 파이썬 for문을 이용해서 집합의 각 항목에 대해서 반복문을 실행하는 루프를 만들 수 있음
- 확정된 항목의 집합에 대해서 실행되므로 "확정 루프"라고 함.
- 확정 루프는 집합의 원소를 통해 반복
- 숫자 리스트
for i in [5, 4, 3, 2, 1] :
print(i)
print('Blastoff!')
# 결과
5
4
3
2
1
Blastoff!
for i in [5, 4, 3, 2, 1] :
print(i)
print('Blastoff!')
# 결과
5
4
3
2
1
Blastoff!
포함 연산자인 in
을 사용하여 반복변수 i가 리스트 [5,4,3,2,1]을 순서대로 인덱싱한다. 즉, 5 4 3 2 1 이 출력이 된다.
- 문자열 리스트
friends = ['Connect', 'Korea', 'NHN']
for friend in friends:
print('Happy New Year!! ', friend)
print('Done!')
# 결과
Happy New Year!! Connect
Happy New Year!! Korea
Happy New Year!! NHN
Done!
문자열에서도 마찬가지로 in
을 사용하여 friend라는 반복변수를 friends 리스트안을 순서대로 인덱싱한다.
👓 반복문 응용
- 가장 큰 값 구하기
largest_so_far = -1 # 작은 수로 -1로 선언
print('Before', largest_so_far) # 최초의 값과 루프 이후의 값을 비교하기 위해 print 함수로 현재의 값을 확인
numbers = [9, 41, 12, 3, 74, 15] # numbers라는 int를 원소로 가지는 list를 선언
for the_num in numbers
if the_num > largest_so_far : # 현재의 값(the_num)이 현재 가장 큰 값이 할당 되어 있는 largest_so_far보다 크다면
largest_so_far = the_num # largest_so_far의 값을 the_num으로 바꿔줌
print('largest_so_far: ', largest_so_far, 'current number: ',the_num)
print('After', largest_so_far)
Before -1
largest_so_far: 9 current number: 9
largest_so_far: 41 current number: 41
largest_so_far: 41 current number: 12
largest_so_far: 41 current number: 3
largest_so_far: 74 current number: 74
largest_so_far: 74 current number: 15
After 74
1. 루프를 사용하여 개수 세기
- 리스트에 몇 개의 원소가 있는지를 알고자 할 때
zork = 0
print('Before', zork)
numbers = [9, 41, 12, 3, 74, 15]
for thing in numbers :
zork = zork + 1
print(zork, thing)
print('After', zork)
# 결과
Before 0
1 9
2 41
3 12
4 3
5 74
6 15After 6
2. 루프를 사용하여 합계 구하기
- 각 원소를 누적해서 더해 총합을 알아 낼 수 있다.
zork = 0
print('Before', zork)
numbers = [9, 41, 12, 3, 74, 15]
for thing in numbers :
zork = zork + thing
print(zork, thing)
print('After', zork)
# 결과
Before 0
9 9
50 41
62 12
65 3
139 74
154 15
After 154
3. 루프를 사용하여 평균 구하기
- 원소의 수와 총합을 활용하여 평균을 구할 수 있다.
count = 0 # 평균을 전체 원소의 수로 나누기 위해 total number를 확인합니다.
sum = 0
print('Before', count, sum)
numbers = [9, 41, 12, 3, 74, 15]
for value in numbers :
count = count + 1
sum = sum + value
print(count, sum, value)
print('After', count, sum, sum/count)
# 결과
Before 0 0
1 9 9
2 50 41
3 62 12
4 65 3
5 139 74
6 154 15
After 6 154 25.666666666666668
4. 루프를 사용하여 필터링 하기
- if문을 사용하여 특정 값보다 큰 수를 print를 이용해 확인 할 수 있다.
print('Before')
numbers = [9, 41, 12, 3, 74, 15]
for value in numbers :
if value > 20:
print('Large number', value)
print('After')
# 결과
Before
Large number 41
Large number 74
After
5. 부울값을 사용하여 특정 값을 검색하기
- 부울 변수를 사용하여 list 안에 특정 값을 찾을 수 있다.
- 부울 변수는 True(참) 또는 False(거짓)의 값을 가진다.
found = False
print('Before', found)
numbers = [9, 41, 12, 3, 74, 15]
for value in numbers :
if value == 3 :
found = True
print(found, value)
break
print('After', found)
# 결과
Before False
True 3
After True
6. 가장 작은 수를 찾는 코드 완성하기
- 가장 작은 수를 찾는 루프를 완성하기 위해서는 우리는 None 자료형에 대해서 알아야 한다. None은 값이 없다는 것이다. 하나의 빈 상자에 이 상자는 비어 있다라고 명시적으로 표시하고 있다고 생각하면 된다.
- 또한,
is
와is not
의 연산자는 자료형과 값이 동일할 때 True를 반환한다. 예를 들어, 0 == 0.0은 True이지만 0 is 0.0은 False입니다. 값은 동일하지만 자료형이 전자는 int이고 후자는 float 이기 때문이다.
smallest = None
print('Before')
numbers = [9, 41, 12, 3, 74, 15]
for value in numbers :
if smallest is None :
smallest = value
elif value < smallest :
smallest = value
print(smallest, value)
print('After', smallest)
# 결과
Before
9 9
9 41
9 12
3 3
3 74
3 15
After 3
📗 참고
Author And Source
이 문제에 관하여(파이썬 코칭스터디 1기 - 모두를 위한 파이썬(PY4E) 5강 (반복문)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimtae9217/파이썬-코칭스터디-1기-모두를-위한-파이썬PY4E-5강저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)