如何修复名称错误:名称“乌龟”未定义。您的意思是:“元组”吗?

问题描述 投票:0回答:1

我正在尝试用 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*

Expected result

python turtle-graphics python-turtle
1个回答
3
投票

避免

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()
。如果没有括号,它是一个空操作,除非您在另一个表达式中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.