목표
- 함수를 사용하여 휴보 로봇이 비퍼들을 줍는 프로그램을 모듈러하게 작성하기
- 함수를 사용하여 색의 밝기 측정 및 디지털 사진을 흑백 모드로 변환하기
Hubo와 Ami
휴보만 사용할 수 있었던 turn_right() 함수를 인자를 이용해 모든 로봇이 사용할 수 있도록 함
def turn_right(robot):
for i in range(3):
robot.turn_left()
ami = Robot("yellow")
hubo = Robot("blue")
turn_right(ami)
turn_right(hubo)
#매개변수는 함수 내부에서만 사용 가능
#함수 밖에서 사용 시 없는 함수로 오류가 뜸
함수를 이용한 비퍼 줍기
▒ 첫 번째 가장 큰 마름모꼴 비퍼를 줍는 알고리즘을 세우면 전체 문제를 해결할 수 있음
▒ top-down 형식으로 과제를 작게 잘라서 하나씩 해결하는 디자인으로 프로그램 설계
In [1]: def harvest_all(robot):
...: for i in range(3): #3겹의 작업을 수행하기 위해
...: n = 5 - 2 * i
...: diamond(robot, n) #한 변의 길이가 n인 다이아몬드 모양으로 robot을 움직이면서 비퍼를 주움
...: robot.move()
...: robot.move()
In [2]: def diamond(robot, n):
...: for i in range(4): #마름모의 4변에 대한 작업을 수행하기 위해
...: stairs(robot, n)
...: robot.turn_left()
#각각의 모서리에서 hubo가 바라보고 있는 방향이 달라짐
#stair function을 사용해서 서로 다른 방향의 비퍼를 먹을 수 있음
In [3]: def stairs(robot, n):
...: for i in range(n): #주어진 n의 길이만큼 지그재그로 움직임
...: robot.pick_beeper()
...: robot.move()
...: turn_right(robot)
...: robot.move()
...: robot.turn_left
☞ 이렇듯 함수는 프로그램을 간결하게, 이해하기 쉽게 짜도록 함
흑백으로 변환하기
▒ r, g, b로 표현되는 색의 밝기를 계산하는 함수
▒ 색의 밝기(luma)를 계산하는 함수
def luma(p):
r, g, b = p
return int(0.213 * r + 0.715 * g + 0.072 * b)
#디지털 사진에서 각각의 픽셀의 밝기를 luma함수를 통해 구할 수 있음
white = (255, 255, 255)
black = (0, 0, 0)
def blackwhite(img, threshold): #임계점을 인자로 넘겨줌
w, h = img.size()
for y in range(h):
for x in range(w): #이미지의 가로, 세로 폭을 받음
v = luma(img.get(x, y)) #각각의 픽셀에 대한 빛의 세기를 받음
if v > threshold:
img.set(x, y, white) #하얀색 입히기
else:
img.set(x, y, black) #검정색 입히기
pict = load_picture("../photos/yunal.jpg")
blackwhite(pict, 100)
pict.show()
정리하기
- 함수를 사용하여 휴보 로봇이 비퍼들을 줍는 프로그램을 모듈러하게 작성하기
- 함수를 사용하여 탑다운 디자인 설계하기
- 함수를 사용하여 색의 밝기 측정 및 디지털 사진을 흑백 모드로 변환하기
edwith, 파이썬으로 배우는 프로그래밍 기초, 김문주 교수
I'm a Senior Student in Data Science !
데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)
'Programming > #Python' 카테고리의 다른 글
[Python] 지역 변수와 전역 변수 (1) | 2019.11.08 |
---|---|
[Python] 함수 인자와 매개 변수 (0) | 2019.11.08 |
[Python] 매개 변수와 반환값을 가진 함수 (0) | 2019.10.14 |
[Python] 튜플과 디지털 사진 변환 (0) | 2019.10.07 |
[Python] 파이썬으로 배우는 프로그래밍 (0) | 2019.10.02 |