import sys
print(sys.platform)
print(2**100)
raw_input()
我在使用Python 3.1,不能让raw_input
冻结" dos弹出。我读的书是针对Python 2.5的,而我用的是Python 3.1。
我应该怎么做才能解决这个问题?
从Python 3开始,raw_input()
被重新命名为input()
。
这在Python 3.x和2.x中都适用。
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
正如其他人所指出的,raw_input
函数在Python 3.0中已经改名为input
,你确实应该读一本更先进的书,但我想指出,有更好的方法可以看到你的脚本的输出。
从你的描述来看,我认为你使用的是Windows,你保存了一个.py
文件,然后你双击它来运行它。你的程序一结束,弹出的终端窗口就会关闭,所以你无法看到你的程序的结果是什么。为了解决这个问题,你的书建议添加一个raw_input
/input
语句来等待用户按回车键。然而,正如你所看到的,如果出了问题,例如你的程序出错,该语句将不会被执行,窗口将关闭,你无法看到出错的地方。你可能会发现使用命令提示符或IDLE更容易。
当你看到包含你的Python程序的文件夹窗口时,按住shift键,在窗口的白色背景区域的任何地方点击右键。弹出的菜单应该包含一个条目"Open command window here"。(我想这在 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
...然后按回车键。(如果你得到一个错误,说"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-agnostic环境中运行。
# 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输入通常是很费时间的(等待输入),所以它不重要。
理论上,你甚至可以指定raw_input来代替real_raw_input,但可能有模块会检查raw_input的存在并做出相应的行为。 最好是保持安全的一面。