Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用onkey函数更改列表的位置_Python_List_Turtle Graphics - Fatal编程技术网

如何在python中使用onkey函数更改列表的位置

如何在python中使用onkey函数更改列表的位置,python,list,turtle-graphics,Python,List,Turtle Graphics,我想通过使用onkey函数制作的shapes=[“正方形”、“三角形”、“圆形”]列表来更改海龟的形状。我的意思是,每当我按下一个按钮,例如h,我将如何使它在我按下h时通过每个形状。我将使用turtle.shape()函数来实现这一点 到目前为止,我所做的是创建一个形状列表,但我不知道如何实现下一个我想要实现的目标 def turtle1 (): shapes = ["square", "triangle", "circle", "pentagon", "star", "octagon

我想通过使用onkey函数制作的
shapes=[“正方形”、“三角形”、“圆形”]
列表来更改海龟的形状。我的意思是,每当我按下一个按钮,例如h,我将如何使它在我按下h时通过每个形状。我将使用
turtle.shape()
函数来实现这一点

到目前为止,我所做的是创建一个形状列表,但我不知道如何实现下一个我想要实现的目标

  def turtle1 ():
   shapes = ["square", "triangle", "circle", "pentagon", "star", "octagon"]
   shapeiter = itertools.cycle(shapes)
   next(shapeiter)
   1
   shape(next(shapeiter))
   next(shapeiter)
   2
   shape(next(shapeiter))
   next(shapeiter)
   3
   shape(next(shapeiter))
   next(shapeiter)
   4
   shape(next(shapeiter))
   next(shapeiter)
   5
   shape(next(shapeiter))
   next(shapeiter)
   6
   shape(next(shapeiter))


 onkey(turtle1, "h")
将允许您无限期地循环一个序列

>>> t = itertools.cycle((1, 2, 3))
>>> next(t)
1
>>> next(t)
2
>>> next(t)
3
>>> next(t)
1
>>> next(t)
2

这个问题似乎没有适当的结尾,所以我将尝试这样做

下面是使用@IgnacioVazquez Abrams'
itertools.cycle()
基于解决方案的重写@海登的原始代码列出了不一定有效的形状,这可能导致他的代码过早退出。我使用了
turtle.getshapes()
来获取有效的形状,并且还更改了窗口标题以提供形状名称:

import turtle
import itertools

def reshape():
    turtle.shape(next(shape_iterator))

    turtle.title(turtle.shape())

screen = turtle.Screen()

shape_iterator = itertools.cycle(screen.getshapes())

screen.onkey(reshape, "h")

screen.listen()

reshape()

screen.mainloop()

单击窗口使其处于活动状态,然后键入“h”循环浏览所有内置的海龟形状。

我是否将数字替换为形状?您将使用希望循环浏览的任何序列替换函数的参数,例如
shapeiter=itertools.cycle(shapes)
。请确保只调用该函数一次。好的,让我尝试一下,我会发布我的发现。我尝试了编辑文章中的操作,但似乎不起作用。
next()
返回一个值。你需要做一些有价值的事情。