在考虑Python 2.x和3.x时考虑输入

时间:2018-01-09 15:50:39

标签: python-3.x python-2.7

由于Python 2的raw_input已经改为Python {3 {1}},我想知道在考虑Python 2和3时是否有办法获取输入。我正在尝试写两个版本的脚本,这个输入部分是唯一不能正常工作的部分。

我尝试用Py2运行input,这种情况发生了:

input

我看到了一个引用输入的解决方法:

>>> a = input('Input: ')
inp: test
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    a = input('Input: ')
  File "<string>", line 1, in <module>
NameError: name 'test' is not defined

有没有办法将引用连接到输入的开头和结尾? >>> a = input('Input: ') inp: "testing test" a 'testing test' 无效

2 个答案:

答案 0 :(得分:2)

可能不是一个好习惯,但您可以使用try块来测试raw_input()是否被识别(从而告诉您是否在Python 2.x或Python 3上) .X):

try:
    a = raw_input('input: ')
except NameError:
    a = input('input: ')

我会使用raw_input()进行测试,因为它不被Python 3.x接受并且是您希望在Python 2.x中使用的,因此input()不会触发Python 2.x。

我不是专家,所以我确信有更好的建议。

@ Chris_Rands&#39; suggested dupe thread通过绑定input = raw_input提供更优雅的解决方案,因此,如果您有多个input(),则只需try一次。

答案 1 :(得分:-1)

这适用于Python 2和3.

from builtins import input
input("Type something safe please: ")