在Python 2中:
raw_input()
在Python 3中,我得到一个错误:
name 'raw_input'没有定义
在Python 2中:
raw_input()
在Python 3中,我得到一个错误:
name 'raw_input'没有定义
当前回答
下面这个怎么样?应该允许您使用raw_input或Python2和Python3中的input,具有Python2的raw_input的语义(也就是Python3的输入的语义)
# raw_input isn't defined in Python3.x, whereas input wasn't behaving like raw_input in Python 2.x
# this should make both input and raw_input work in Python 2.x/3.x like the raw_input from Python 2.x
try: input = raw_input
except NameError: raw_input = input
其他回答
另一种方法是,创建一个新函数。
import platform
def str_input(str=''):
py_version = platform.python_version() # fetch the python version currently in use
if int(py_version[0]) == 2:
return raw_input(str) # input string in python2
if int(py_version[0]) == 3:
return input(str) # input string in python3
使用方法:
str_input("Your Name: ")
当我想创建可以在python2和python3中运行的脚本和输入时,我会使用这个方法
可能不是最好的解决方案,但在我来这里之前,我只是在飞行中继续工作,没有从学习中快速休息。
def raw_input(x):
input(x)
然后,当我在我正在处理的脚本上运行raw_input('输入您的第一个名字:')时,它会像input()一样捕获它。
也许有一个理由不这样做,我还没有遇到!
这在python3中有效。X和2.x:
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
解决这个问题的可靠方法是
from six.moves import input
Six是一个可以修补2/3常见代码基础痛点的模块。
从Python 3开始,raw_input()被重命名为input()。
Python 3.0更新:内置程序节第二项。