这是我编写的一些基本代码:
userInput = input("Type in a random word:\n")
print("Here are the letters in that word")
for letters in userInput:
print(letters)
在 3.5 shell/IDLE 中完全可以工作,但在我的终端中无法工作... 这是我将输入设置为“测试”时出现的错误:
NameError: name 'test' is not defined
有什么帮助吗?
在终端中,您实际上运行的是 Python 2。Python 2 中的
raw_input()
相当于 Python 3 中的 input()
。Python 2 中的 input()
会将输入计算为 Python 语句,因此它会尝试计算 test
作为变量名。
如果您使用的是 Windows,则可以使用 Python 启动器 (py.exe) 指定要运行的 Python 版本(如果安装了多个版本)。 如果您安装了 Python 3,它应该已经在路径中。在 Linux 中
python3
应该可以工作。
示例:
C:\>py -3
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> input()
test
'test'
>>> ^Z
C:\>py -2
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> input()
test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'test' is not defined
您第二次使用 Python 2 运行代码。您可以使用应该可以工作的 python3,而不是使用命令 python。
在 Python 2 中,您应该使用
raw_input()
来代替,因为输入函数包含对 eval()
函数的调用,该函数尝试将输入作为 Python 代码执行。 raw_input()
将输入视为字符串。在 Python 3 中,raw_input()
已被 input()
取代。