Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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键错误,但没有dict_Python_Python 3.x_Turtle Graphics - Fatal编程技术网

Python键错误,但没有dict

Python键错误,但没有dict,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,我一直在尝试运行我的程序,但每次运行时,我都会发现: Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\GURNHH\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__ return self.func(*args) File "C:\User

我一直在尝试运行我的程序,但每次运行时,我都会发现:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\GURNHH\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
    return self.func(*args)
  File "C:\Users\GURNHH\AppData\Local\Programs\Python\Python35-32\lib\turtle.py", line 686, in eventfun
    fun()
  File "C:/Users/GURNHH/OneDrive - Rugby School/ICT/Python/bored.py", line 22, in k1
    badpos.remove((int(turtle.xcor()), int(turtle.ycor())))
KeyError: (0, 0)
我不知道在这种情况下,键错误意味着什么,因为,与其他很多人不同,我没有使用dict。 我的程序应该让海龟在50次移动后返回中心,但不在设置的badpos中计算0,0。我的计划是:

from turtle import Turtle, Screen
    from math import *
    from random import *

    random = 0

    """def add():
        random = random + 1
    def check():
        if random > 4:
            random = 0"""

    def k1():
        global random
        turtle.forward(10)
        random = random + 1

        if random > 5:
            turtle.goto(0,0)
            badpos.remove((int(turtle.xcor()), int(turtle.ycor())))


        position = (int(turtle.xcor()), int(turtle.ycor()))

        if position in badpos:
            turtle.color("red")
            screen.bye()


    def k2():
        turtle.left(90)

    def k3():
        turtle.right(90)

    turtle = Turtle(shape="turtle")

    badpos = set()

    screen = Screen()
    screen.setup(1200, 700)
    screen.title("Turtle-Snaky Thing")

    screen.onkey(k1, "Up")
    screen.onkey(k2, "Left")
    screen.onkey(k3, "Right")

    screen.listen()

    screen.mainloop()

我对你能把一段工作代码完全弄糟印象深刻。下面是对我的原始示例的修改,添加了50步移动限制:

from turtle import Turtle, Screen

def k1():
    global move_count

    turtle.forward(10)

    move_count += 1

    if move_count % 50 == 0:
        turtle.home()

    position = (int(turtle.xcor()), int(turtle.ycor()))

    if position != (0, 0) and position in badpos:
        turtle.color("red")
        screen.bye()

    badpos.add(position)

def k2():
    turtle.left(90)

def k3():
    turtle.right(90)

turtle = Turtle(shape="turtle")

move_count = 0
badpos = set()

screen = Screen()
screen.setup(1200, 700)
screen.title("Turtle-Snakey Thing")

screen.onkey(k1, "Up")
screen.onkey(k2, "Left")
screen.onkey(k3, "Right")

screen.listen()

screen.mainloop()
我不太喜欢你全盘引用我的例子,但不接受我先前的回答。这种新的变体使用起来更为棘手,因为您可以从家中以90度角重新启动的次数很少,即使不包括原点,也不会在前一行上进行踩踏:

也许转弯60度或30度可以让你在离家时有更多的灵活性


另外,您在此程序中没有使用
dict()
。这是一个
set()

文档中说,如果您试图删除的东西不在那里,
remove()
会引发一个
KeyError
。@Gurneyguy,至少有两种方法。最简单的方法是使用一个单独的工具进行屏幕截图,并以您想要的格式保存--这是我通常做的。在Python中,更棘手的方法是通过
turtle.screen().getcanvas()
从turtle屏幕获取tkinter画布对象,然后调用画布上的
postscript()
方法生成postscript文件。然后您需要将PostScript文件转换为PDF格式(它们都是Adobe格式)。请阅读tkinter文档以了解
PostScript()
方法参数的详细信息。您能给我一个代码示例吗?我刚刚开始使用python,所以我不知道我在做什么,我尝试了以下方法:从turtle导入turtle,Screen Screen.onkey(k100,“o”)#保存图片def k100():bob=turtle()ts=bob.getscreen()name=input(“你想称你的杰作是什么?”)ts.getcanvas().postscript(文件=(名称,.png')),colormode='color')