我正在尝试用 Python 移动乌龟,但我得到:
NameError: name 'turtle' is not defined. Did you mean: 'tuple'?
这是我的代码:
from turtle import*
x = input('what is you fav color?(in eng pls)')
y = input('what is your name?')
yx10 = y * 100
t = turtle()
t.pencolor(x)t.forward(yx10)done*
避免
from turtle import *
。它用超过 120 个函数污染了命名空间,并且通常会导致海龟的实例和函数式 API 之间的混淆:
print(len(globals())) # => 9
from turtle import *
print(len(globals())) # => 131
对:
print(len(globals())) # => 9
import turtle
print(len(globals())) # => 10
额外的模块前缀需要更多的输入,但使所有权更加清晰,使代码更具可读性并有助于减少错误。
我们可以看到
turtle
模块有一个属性Turtle
,可以调用它来创建乌龟:
import turtle
print(turtle.Turtle) # => <class 'turtle.Turtle'>
t = turtle.Turtle()
一个常见的错误是调用返回的实例
turtle
,覆盖模块:
import turtle
print(turtle.Turtle) # => <class 'turtle.Turtle'>
turtle = turtle.Turtle() # wrong!
如果你想调用你的实例
turtle
,你可以使用:
from turtle import Turtle # only import what you need
print(Turtle) # => <class 'turtle.Turtle'>
turtle = Turtle() # OK but potentially confusing
如果您不确定海龟对象上有什么可用,请随时查看 docs 或使用
dir
:
import turtle
print(dir(turtle))
# or filter out private properties
print([x for x in dir(turtle) if not x.startswith("_")])
按顺序处理后,代码出现问题(除了格式错误之外,我认为这是粘贴到编辑器中的产物):
y = input('what is your name?')
yx10 = y * 100
print(type(yx10)) # => <class 'str'>
print(repr(yx10)) # => 'foofoofoofoofoofoofoo<...>'
您的意思可能是:
distance = int(input('How far do you want to move? '))
distance *= 100
print(type(distance)) # => <class 'int'>
print(repr(distance)) # => 500
错误处理留作练习,包括上面的字符串到整数转换以及非法颜色字符串。
最后,如果这不是复制粘贴错误,请不要忘记致电
done()
,或者在修复导入后更好的 turtle.done()
。如果没有括号,它是一个空操作,除非您在另一个表达式中使用它。