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')