[英]How do I use raw_input in Python 3?
在 Python 2 中:
raw_input()
在 Python 3 中,我收到一个错误:
NameError:未定义名称“raw_input”
从 Python 3 开始, raw_input()
被重命名为input()
。
来自Python 3.0 中的新增功能,内置部分第二项。
这适用于 Python 3.x 和 2.x:
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
在Python 3.xx中,您只需要input()
而不是raw_input()
正如其他人所指出的那样, raw_input
函数在 Python 3.0 中已重命名为input
,并且您确实会得到一本更新的书更好的服务,但我想指出,有更好的方法来查看输出你的脚本。
根据您的描述,我认为您使用的是 Windows,您已经保存了一个.py
文件,然后您双击它来运行它。 程序结束后弹出的终端窗口会立即关闭,因此您看不到程序的结果。 为了解决这个问题,你的书建议添加一个raw_input
/ input
语句来等到用户按下回车键。 但是,正如您所看到的,如果出现问题,例如程序中的错误,该语句将不会被执行,并且窗口将关闭,而您无法看到出了什么问题。 您可能会发现使用命令提示符或 IDLE 更容易。
当您查看包含 Python 程序的文件夹窗口时,按住 shift 并右键单击窗口白色背景区域的任意位置。 弹出的菜单应包含一个条目“在此处打开命令窗口”。 (我认为这适用于 Windows Vista 和 Windows 7。)这将打开一个命令提示符窗口,如下所示:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Weeble\My Python Program>_
要运行您的程序,请键入以下内容(替换您的脚本名称):
python myscript.py
...然后按 Enter。 (如果您收到“python”不是可识别的命令的错误,请参阅http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 )当您的程序运行完成时,无论是否成功完成,窗口将保持打开状态,命令提示符将再次出现,供您键入另一个命令。 如果你想再次运行你的程序,你可以按向上箭头来调用你之前输入的命令,然后按回车再次运行它,而不必每次都输入文件名。
IDLE 是一个简单的程序编辑器,随 Python 一起安装。 除其他功能外,它还可以在窗口中运行您的程序。 右键单击您的.py
文件并选择“在 IDLE 中编辑”。 当您的程序出现在编辑器中时,按 F5 或从“运行”菜单中选择“运行模块”。 您的程序将在程序结束后保持打开的窗口中运行,您可以在其中输入 Python 命令以立即运行。
Timmerman 的解决方案在运行代码时效果很好,但如果您不想在使用 pyflakes 或类似的 linter 时出现Undefined name
错误,您可以使用以下代码:
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
这是我放入脚本中的一段代码,我不想在与 py2/3 无关的环境中运行:
# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)
现在您可以使用 real_raw_input。 它相当昂贵,但简短易读。 使用原始输入通常很耗时(等待输入),所以它并不重要。
理论上,您甚至可以分配 raw_input 而不是 real_raw_input,但可能会有模块检查 raw_input 的存在并做出相应的行为。 最好保持安全。
可能不是最好的解决方案,但在我来这里之前,我只是在飞行中做这个以继续工作,而不会从学习中快速休息。
def raw_input(x):
input(x)
然后,当我在正在处理的脚本上运行raw_input('Enter your first name: ')
时,它会像input()
那样捕获它。
可能有理由不这样做,我还没有遇到过!
下面的那一个呢? 应该允许您在 Python2 和 Python3 中使用 raw_input 或 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 中运行的脚本和输入时,我会使用它
raw_input()函数已从Python 3.x中删除。 取输入python2曾经有两个函数,分别是input()和raw_input()
如果要在3.x中具有2.x的相同功能以获取输入参数,请遵循此Wiki链接https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.