들어가기
루프를 활용해 몇가지 패턴을 알게 되면 우리는 다양한 작업들을 수행할 수 있게 됩니다.
가장 큰 수를 찾거나, 리스트의 원소의 수를 계산하는 등, 사람이 하기에는 귀찮은 작업들을 컴퓨터는 빠르게 처리해 줍니다. 어떤식으로 응용하는지 같이 살펴 보시죠.
학습목표
파이썬에서의 반복작업은 어떤식으로 수행되는지 이해하고 활용할 수 있다.
핵심 키워드
- 루프
학습 영상
들어가기
루프를 활용해 몇가지 패턴을 알게 되면 우리는 다양한 작업들을 수행할 수 있게 됩니다.
가장 큰 수를 찾거나, 리스트의 원소의 수를 계산하는 등, 사람이 하기에는 귀찮은 작업들을 컴퓨터는 빠르게 처리해 줍니다. 어떤식으로 응용하는지 같이 살펴 보시죠.
학습목표
파이썬에서의 반복작업은 어떤식으로 수행되는지 이해하고 활용할 수 있다.
핵심 키워드
학습 영상
학습 내용
루프의 활용
몇 가지 패턴을 통해서 우리는 루프를 활용해 다양한 작업들을 수행할 수 있습니다.
1. 루프를 사용하여 개수 세기
리스트에 몇 개의 원소가 있는지를 알고자 할 때 우리는 루프를 사용할 수 있습니다.
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
2. 루프를 사용하여 합계 구하기
물론, 각 원소를 누적해서 더해 총합을 알아 낼 수도 있습니다.
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
3. 루프를 사용하여 평균 구하기
원소의 수와 총합을 활용하면 우리는 평균을 구할 수도 있습니다.
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 9 9
# 2 50 41
# 3 62 12
# 4 65 3
# 5 139 74
# 6 154 15
# After 6 154 25.666666666666668
4. 루프를 사용하여 필터링 하기
특정 값보다 큰 수를 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)
# 9 9
# 9 41
# 9 12
# 3 3
# 3 74
# 3 15
# After 3
comment
첫번째 루프가 진행되면서 None=9로 정해져서 고정된건가요?
smallest_so_far = None
print("Before")
for value in {9 ,41, 12, 3, 74, 15} :
if smallest_so_far is None :
smallest_so_far = value
elif value < smallest_so_far :
smallest_so_far = value
print(smallest_so_far, value)
print("after", smallest_so_far)
6번 가장 작은 수를 찾는 코드에서
smallest = None vs if smallest is None 와 같은 구문이 있습니다.
여기서 "=" 와 "is" 를 다르게 표현한 이유가 무엇인지 궁금합니다.
가장 큰 수를 찾거나, 리스트의 원소의 수를 계산하는 등, 사람이 하기에는 귀찮은 작업들을 컴퓨터는 빠르게 처리해 줍니다.
is, is not 사용은 불리형,none형에만 사용
is 는 강력하다
found = False
print('Before', found)
for number in [100, 90, 80, 77, 33, 99] :
if number == 33 :
found = True
print(found, number)
else:
found = False
print(found, number)
print('After', number)
에러가 나는데 에러창이
line 24
print(found, number)
^
IndentationError: unindent does not match any outer indentation level
라고 뜹니다. 어떻게 고쳐야 할까요...?
많이 어렵지만 아톰에 입력하면서 따라가봅니다 ㅎ
좋은강의 감사합니다.
비공개 글입니다.
질문드립니다.
If smallest is NONE 에서 NONE은 0을 의미하는건가요?
그리고 is도 잘 이해가 가질 않습니다.
어린이의 시각으로 설명 부탁드릴 수 있을까요?
3 이후에 True를 False로 수정해주는 코드로 수정했는데..
루프가 돌다보니 마지막에 False로 끝나네요... 이걸 True로 바꿔주는 좋은 방법은 뭘까요?
감사합니다!
hello world