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

Python代码在CMD中不工作,但在IDLE中工作?,python,cmd,Python,Cmd,我是Python新手,一直在尝试制作一个小的测试游戏,但当我在CMD中运行我的程序时,它给出了这个错误的答案 你叫什么名字? 试验 回溯(最近一次呼叫最后一次): 文件“C:\Users\User\Documents\Python Games\Test.py”,第2行,在 myName=input() 文件“”,第1行,在 NameError:未定义名称“Test” 尽管这在空闲状态下运行良好。这是代码的顶部 print('What Is Your Name?') myName = input

我是Python新手,一直在尝试制作一个小的测试游戏,但当我在CMD中运行我的程序时,它给出了这个错误的答案

你叫什么名字?
试验
回溯(最近一次呼叫最后一次):
文件“C:\Users\User\Documents\Python Games\Test.py”,第2行,在
myName=input()
文件“”,第1行,在
NameError:未定义名称“Test”
尽管这在空闲状态下运行良好。这是代码的顶部

print('What Is Your Name?')
myName = input()
print('Hello '+str(myName)+' It is good to meet you!') 

这是因为python版本发生了变化。您可能安装了两条蟒蛇。 Python2.x在路径中。而Python3.x是空闲的

name错误:未定义名称“Test”
是因为它的python 2.x

myName=input()
更改为
myName=raw\u input()

它将在Python2.x中工作


您的空闲版本必须是python 3.x,其中没有
原始输入()

Python2.x和Python3.x之间几乎没有变化

其中之一是更改
输入
功能

在Python 2中,
input
函数计算用户键入的内容。当用户必须键入数字时,使用此功能。将对其进行分析,并且包含
输入的返回值的变量将是数值类型(
float
int

在您的例子中,由于用户名可能不是数字,并且如果您使用的是Python 2,那么应该使用函数
raw\u input
,该函数将用户的输入作为字符串返回,而不进行解析。这意味着,如果用户键入一个数字,将返回包含该数字的字符串

出于安全原因,不建议使用Python 2的
input
函数,因为该函数对输入进行求值,尽管它非常方便地解析数字而无需强制转换,但它也允许用户向应用程序中注入恶意代码;)

因此,Python3中的输入函数已被raw_输入函数替换,而raw_输入函数已被删除

修复

我认为操作系统的默认行为是,当您想要运行
python
时,调用
python2
。因此,如果您想运行
python3
,必须明确指出:

  • 在windows上:

    py-3

  • 在ubuntu上(其他发行版可能也是如此):

    蟒蛇3


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

听起来您使用的是来自python3的IDLE,但脚本使用的是python2。你需要在python2中使用
raw\u input()
。我使用的是Python3,当我放置raw\u input()时,我被告知它没有定义。这是正确的。在Python3中,
input()
执行Python2中的
raw\u input()
操作。您需要确保脚本是使用Python3运行的。选择一个Python版本并将其用于所有操作,以避免像这样混淆。如何卸载Python2?我只有Python27是的,我错误地使用了Python2,只是不得不更改路径以转到Python3,现在一切都正常了,谢谢大家的帮助@班尼曼很高兴知道这有帮助。
>>> print str(input("Enter your name: "))
Enter your name: __import__('os').listdir('.')
['super_secret.txt']