모두를 위한 파이썬(PY4E) [5. 루프와 반복문] 강의
Charles R. Severance (찰스 R. 세브란스)의 <모두를 위한 파이썬(PY4E)> 수강 내용
https://www.boostcourse.org/cs122/joinLectures/284901
5. 루프와 반복문
1) while 루프
학습목표
파이썬에서의 반복작업은 어떤 식으로 수행되는지 이해하고 활용할 수 있다.
핵심키워드
- while 루프
while 루프
아래의 코드를 살펴보면, while과 :(콜론) 사이에 오는 조건문이 참의 값을 가지는 경우에는 :(콜론)이하의 코드가 반복해서 작동하게 된다. 통상적으로 while문을 자주 사용하게 된다면 자신의 코드를 되돌아볼 필요가 있다. 물론 while은 반복적으로 작업할 수 있도록 해주는 편리한 문법이지만 무한루프에 빠질 수 있는 단점도 내포하고 있기 때문이다.
n=5
while n>0:
print(n)
n=n-1
print('Blastoff!')
print(n)
루프(Loop) 제어하기
break
루프가 break를 만나게 되면 해당 루프는 실행이 종료 되고 while문 바로 뒤의 코드를 실행하게 된다.
while True:
line = input('>')
if line == 'done':
break
print(line)
print('Done!')
# > hello there로 입력
# hello there로 출력
# > finished로 입력
# finished로 출력
# > done으로 입력
# done!으로 출력
continue
루프가 continue를 만나게 되면 해당 루프는 실행이 종료되고 루프가 시작된 지점부터 다시 루프를 실행하게 된다.
while True:
line = input('>')
if line[0] == '#':
continue
if line == 'done':
break
print(line)
print('Done!')
# > hello there로 입력
# hello there로 출력
# > don't print this '#'을 입력하게 되면 continue를 만나게 되고 continue는 loop의 시작점으로 다시 돌아가서 loop를 실행
# >print this! 입력
# print this!로 출력
# > done으로 입력
# done!으로 출력 done을 입력하게 되면 break를 만나게 되고 break는 loop 끝나는 점 바로 다음에 오는 코드를 실행
2) for 루프
학습목표
파이썬에서의 반복작업은 어떤 식으로 수행되는지 이해하고 활용할 수 있다.
핵심키워드
- for 루프
for 루프
하나의 파일에 들어 있는 문장의 갯수와 리스트 안에 들어 있는 항목들의 수는 유한개이다. 유한개의 항목들에 대해 우리가 특정 조치들을 취하고 싶을 때 for 루프를 사용한다. 아래에 보는 것처럼 순차적으로 항목들이 출력되는 것을 볼 수 있다.
for i in [5,4,3,2,1]:
print(i)
print('Blastoff!')
# 5
# 4
# 3
# 2
# 1
# Blastoff!
물론 문자열 리스트에서도 동일한 방식으로 출력할 수 있다.
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!
3) 반복문
학습목표
파이썬에서의 반복작업은 어떤 식으로 수행되는지 이해하고 활용할 수 있다.
핵심키워드
- for 루프
루프의 응용
특정조건이 참인 경우에는 반복적으로 실행되는 불확정 루프의 종류인 while문과 유한개의 요소를 가지고 있으며, 개별 요소를 모두 순회하게 되면 종료되는 for 루프를 살펴보았다. 이것을 통해 우리는 무엇을 할 수 있을까? 먼저 for 루프를 이용해 가장 큰 수를 찾아내는 코드를 만들어 보도록 하자.
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 : # iteration value의 현재의 값(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
가장 큰 수를 찾는 문제에 대해서 인간이 해결하는 방식과 컴퓨터가 해결하는 방식에 있어서의 차이를 이해할 필요가 있다. 인간은 전체의 수가 펼쳐져 있는 상태에서 가장 큰 수를 찾기 위해 앞뒤로 유동적으로 비교를 할 수 있는 반면 컴퓨터는 순차적으로 인간이 입력한 코드에 따라 숫자를 비교하게 된다. 이것에 대한 이해가 프로그래밍에서 가장 중요한 부분이다.
4) 반복문 응용
학습목표
파이썬에서의 반복작업은 어떤 식으로 수행되는지 이해하고 활용할 수 있다.
핵심키워드
- 루프
루프의 활용
몇 가지 패턴을 통해서 우리는 루프를 활용해 다양한 작업들을 수행할 수 있다.
-
루프를 사용하여 개수 세기
리스트에 몇개의 원소가 있는지 알고자 할 때 우리는 루프를 사용할 수 있다.zork = 0 print('Before',zork) numbers=[9,41,12,3,74,15] # numbers라는 int를 원소로 가지는 list를 선언 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 15 # After 6
-
루프를 사용하여 합계 구하기
물론 각 원소를 누적해서 더해 총합을 알아낼 수도 있다.zork = 0 print('Before',zork) numbers=[9,41,12,3,74,15] # numbers라는 int를 원소로 가지는 list를 선언 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
-
루프를 사용하여 평균 구하기
원소의 수와 총합을 활용하면 우리는 평균을 구할 수도 있다.count = 0 # 평균을 전체 원소의 수로 나누기 위해 total number를 확인 sum = 0 print('Before', count,sum) numbers=[9,41,12,3,74,15] # numbers라는 int를 원소로 가지는 list를 선언 for value in numbers: count=count+1 sum=sum+value print(count,sum,value) print('After', count, sum,sum/count) # Before 0 0 # 1 99 # 2 50 41 # 3 62 12 # 4 65 3 # 5 139 74 # 6 154 15 # After 6 154 25.666666666666668
-
루프를 사용하여 필터링 하기
특정 값보다 큰 수를 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
-
부울값을 사용하여 특정 값을 검색하기
우리가 원하는 특정 값이 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
-
가장 작은 수를 찾는 코드 완성하기
가장 작은 수를 찾는 루프를 완성하기 위해서는 우리는 None 자료형에 대해서 알아야 한다. None은 값이 없다는 것을 말한다. 하나의 빈 상자에 이 상자는 비어 있다라고 명시적으로 표시하고 있다고 생각하면 된다.
또한 "is"와 "is not"의 연산자는 자료형과 값이 동일할 때 True를 반환하게 된다.
ex) 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) # 9 9 # 9 41 # 9 12 # 3 3 # 3 74 # 3 15 # After 3
5) 반복문-실습-
실습
exercise 5-1
Write a program which repeatedly reads numbers until the user enters "done". Onve "done" is entered, print out the total, count, and average of the numbers. If the user enters anything other than a number, detect their mistake using try
and except
and print an error message and skip to the next number.
num=0
num=0.0
while True:
sval=input('Enter a number: ')
if sval == 'done':
break
try:
fval=float(sval)
except:
print('Invalid input!')
continue
# print(fval)
num = num + 1
tot = tot + fval
# print('ALL DONE')
print(tot,num,tot/num)
6) Quiz 5
Author And Source
이 문제에 관하여(모두를 위한 파이썬(PY4E) [5. 루프와 반복문] 강의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@khj930629/모두를-위한-파이썬PY4E-5.-루프와-반복문-강의저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)