“输入”在 3.5 IDLE 中有效,但在终端中无效[重复]

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

这是我编写的一些基本代码:

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 python-2.7 python-3.x io terminal
2个回答
4
投票

在终端中,您实际上运行的是 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

1
投票

您第二次使用 Python 2 运行代码。您可以使用应该可以工作的 python3,而不是使用命令 python。

在 Python 2 中,您应该使用

raw_input()
来代替,因为输入函数包含对
eval()
函数的调用,该函数尝试将输入作为 Python 代码执行。
raw_input()
将输入视为字符串。在 Python 3 中,
raw_input()
已被
input()
取代。

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