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: "))
Надежный способ решить это
from six.moves import input
шесть представляет собой модуль, который латает над многими из 2/3 общего базового кода болевые точки.
Как указывали другие, функция raw_input
была переименована в input
в Python 3.0, и вам действительно будет лучше прочитать более современную книгу, но я хочу отметить, что есть лучшие способы увидеть вывод вашего сценария.
Из вашего описания я думаю, что вы используете Windows, вы сохранили файл .py
, а затем дважды щелкнули на нем, чтобы запустить его. Появившееся окно терминала закрывается, как только ваша программа завершается, поэтому вы не можете увидеть, каким был результат работы вашей программы. Чтобы решить эту проблему, ваша книга рекомендует добавить оператор raw_input
/ input
, чтобы подождать, пока пользователь нажмет клавишу Enter. Однако, как вы уже видели, если что-то пойдет не так, например, ошибка в вашей программе, этот оператор не будет выполнен, и окно закроется, и вы не сможете увидеть, что пошло не так. Возможно, вам будет проще использовать командный интерпретатор или 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 ) Когда ваша программа закончит выполнение, независимо от того, завершится она успешно или нет, окно останется открытым, и снова появится командная строка, чтобы вы могли ввести другую команду. Если вы хотите запустить программу снова, вы можете нажать стрелку вверх, чтобы вызвать предыдущую команду, которую вы ввели, и нажать Enter, чтобы запустить ее снова, вместо того чтобы каждый раз вводить имя файла.
IDLE - это простой редактор программ, который поставляется вместе с Python. Среди прочих возможностей он может запускать ваши программы в окне. Щелкните правой кнопкой мыши на файле .py
и выберите "Редактировать в IDLE". Когда ваша программа появится в редакторе, нажмите F5 или выберите "Run module" из меню "Run". Ваша программа будет запущена в окне, которое остается открытым после завершения вашей программы и в котором вы можете вводить команды Python для немедленного выполнения.
Тиммерман'ы решение прекрасно работает, когда выполняется код, но если вы Don'т хотим, чтобы ошибки не определено название` при использовании pyflakes или похожие Линтер можно использовать вместо них следующие:
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
Здесь'ы кусок кода, который я поставил в моем сценарии, я WAN'т бежать в 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. Это'ы довольно дорогой, но короткий и четкий. Используя необработанные входные данные обычно время дорого (ожидание ввода), так что's не важно.
В теории, вы даже можете назначить raw_input вместо real_raw_input но там могут быть модули, которые проверяют наличие raw_input и вести себя соответственно. Это's лучше остаться на безопасной стороне.
Наверное, не самое лучшее решение, но прежде чем я приехал сюда, я просто сделал это на лету, чтобы продолжать работать без необходимости быстрый перерыв от учебы.
def raw_input(x):
input(x)
Затем, когда я запускаю raw_input('введите ваше имя: ')
по сценарию я работаю, она захватывает его как входные()
будет.
Там может быть причина не делать этого, что я еще'т встретить еще!