如何从列表中拉出元组,并让海龟将它连接为坐标?
编写一个名为connectTheDots的函数,它接受元组列表作为其输入,并输入一个可选的颜色输入。默认的颜色值应该是黑色的。每个元组都是一个乌龟的坐标对(x,y)。该功能将使龟从第一个坐标开始追踪图像,然后依次移动到每个坐标。如何从列表中拉出元组,并让海龟将它连接为坐标?
您的功能应该执行以下操作:
a。创建一只乌龟,适当设置乌龟的颜色和速度
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)
你有你最需要什么,但很可能使它比需要更复杂,缺少一些小细节。
对于步骤“a”您需要明确地设置颜色(您通过它很好)。使用符号速度而不是数字符号可能会更好。
对于步骤“b”,如果您有适当的for ... in
循环,则不需要显式检查列表是否为空,因为如果循环不运行,则循环将不会运行。你分开的第一项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()