我是Python的新手并且一直试图制作一个小型测试游戏但是当我在CMD中运行我的程序时它会出现这个错误。
What Is Your Name?
Test
Traceback (most recent call last):
File "C:\Users\User\Documents\Python Games\Test.py", line 2, in <module>
myName = input()
File "<string>", line 1, in <module>
NameError: name 'Test' is not defined
虽然这在IDLE中运行良好。这是代码的顶部。
print('What Is Your Name?')
myName = input()
print('Hello '+str(myName)+' It is good to meet you!')
答案 0 :(得分:2)
因为python版本的改变。你可能安装了两个蟒蛇。 Python2.x在PATH中。你有Python 3.x IDLE。
NameError: name 'Test' is not defined
是因为它的python 2.x
将myName = input()
更改为myName = raw_input()
。
它可以在python 2.x中运行
您的IDLE版本必须是python 3.x,其中没有raw_input()
。
答案 1 :(得分:0)
<强>解释强>
Python 2.x和Python 3.x之间的变化很少。
其中一个是input
功能的更改。
在Python 2中,input
函数评估用户输入的内容。当用户必须键入数字时使用此功能。它将被解析,包含返回值input
的变量将是数字类型(float
或int
)。
https://docs.python.org/2/library/functions.html#input
在您的情况下,由于用户的名称可能不是数字,并且您正在使用Python 2,您应该使用函数raw_input
,它将用户的输入作为字符串返回而不进行解析。这意味着如果用户键入一个数字,那么它将是包含此数字的字符串,将返回该字符。
https://docs.python.org/2/library/functions.html#raw_input
出于安全原因,建议不要使用Python 2的input
函数,因为函数会评估输入,虽然它可以非常方便地解析没有强制转换的数字,但它也允许用户注入恶意代码进入你的申请;)
>>> print str(input("Enter your name: "))
Enter your name: __import__('os').listdir('.')
['super_secret.txt']
因此,输入函数已被Python 3中的raw_input函数替换,并且raw_input函数已被删除。
<强>修正强>
我认为您的操作系统的默认行为是在您想要运行python2
时调用python
。因此,如果您想运行python3
,则必须明确说明:
:https://docs.python.org/3.3/using/windows.html#python-launcher-for-windows
py -3
(对于其他发行版可能是相同的):
python3
您的IDE似乎已正确配置为使用python3作为默认解释器。