2017-03-18 1 views
0

입력으로 튜플 목록을 가져 오는 connectTheDots라는 함수를 작성하고 선택적인 색상 입력도 입력하십시오. 기본 색상 값은 검은 색이어야합니다. 각 튜플은 거북이의 좌표 쌍 (x, y)입니다. 이 기능은 첫 번째 좌표에서 시작하여 차례로 각 좌표로 이동하여 거북이 추적을합니다.튜플을 목록에서 빼내 거북이가 좌표로 연결하는 방법은 무엇입니까?

귀하의 기능은 다음을 수행해야합니다

을 수행합니다. 거북이의 색과 속도를 적절히 설정하여 거북을 만듭니다.

b. 입력 목록이 비어 있는지 확인하십시오 : 비어 있으면 아무 것도 일어나지 않습니다!

c. 뒤에 선을 남기지 않고 거북이를 목록에있는 첫 번째 위치로 이동하십시오. 그런 다음 다시 한 줄을 떠나기 시작하십시오. 참고 : 목록에서 값을 추출하는 방법을 기억하고 goto 메소드가 입력으로 단일 (x, y) 튜플을 취할 수 있음을 기억하십시오. myTurtle.goto ((25, 25))는 myTurtle을 x = 25 y = 25이다.

d. 거북이가 시작 좌표에 오면 목록에서 각 좌표로 차례로 이동하십시오.

내가 지금까지 할 수 있었던 것입니다 :

데프 connectTheDots을 (목록 1, 색상 = "블랙") : 당신은 당신이 필요로 대부분을 가지고 있지만 아마하고 있습니다

myTurtle = turtle.Turtle() 
myTurtle.speed(1) 
myTurtle.goto(list1[0]) 
for x,y in list1[1:]: #I'm unsure if this is correct 
    myTurtle.goto(x,y)   

답변

0

그것은 필요한 것보다 더 복잡하고 작은 세부 사항이 빠져 있습니다.

단계 "a"에 명시 적으로 색상을 설정해야합니다 (잘 전달했습니다). 아마도 숫자 대신 기호 속도를 사용하는 것이 더 나을 것입니다. 당신이 적절한 for ... in 루프가있는 경우

단계 "B"를 들어, 목록이 경우 실행되지 않습니다 루프와 하늘의 경우는 명시 적으로 점검 할 필요가 없습니다. 첫 번째 아이템 인 myTurtle.goto(list1[0])을 쪼개는 것은 IndexError을 유발할 수 있으므로 여기에서 반대합니다.

단계 "c" 다른 명령을 추가해야합니다. 거북이들은 화면 중앙에 펜을 내려 놓고 인생을 시작합니다. 거북이를 만든 후에 펜을 들어야합니다. 그러나 명시 적으로 시작 위치로 이동할 필요는 없으며 루프에서 처리하도록하십시오. 우리가 단계 "C"를 사용합니다

비결은단계 "D"는 루프에서 goto() 후 아래로 펜을 넣어하는 것입니다.

우리가 루프에서 아래로 불필요하게 펜을 옮기고 당신을 귀찮게하는 경우
import turtle 

def connectTheDots(coordinates, color="black"): 
    myTurtle = turtle.Turtle() 
    myTurtle.speed("slowest") 
    myTurtle.color(color) 
    myTurtle.penup() 

    for coordinate in coordinates: 
     myTurtle.goto(coordinate) 
     myTurtle.pendown() # redundant after first iteration 

dots = ((34, 56), (100, 240), (230, 105), (34, 56)) 

connectTheDots(dots, "green") 

turtle.done() 

, 우리는 myTurtle.pendown()을 대체 할 수있다 : 처음이 실제로 무해한 무 조작 없다, 그 후, 아래 펜을두고 다음을 포함합니다 :

if not myTurtle.isdown(): 
      myTurtle.pendown() 
관련 문제