Python代码在CMD中不起作用但在IDLE中工作?

时间:2016-04-29 20:48:50

标签: python cmd

我是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!') 

2 个答案:

答案 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的变量将是数字类型(floatint)。

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,则必须明确说明:

您的IDE似乎已正确配置为使用python3作为默认解释器。