import sys
print(sys.platform)
print(2**100)
raw_input()
Я использую Python 3.1 и не могу raw_input
"заморозить" всплывающее окно dos. Книга, которую я читаю, предназначена для Python 2.5, и я использую Python 3.1
Что я должен сделать, чтобы это исправить?
python
python-3.x
Лонни Прайс
источник
источник
Ответы:
Начиная с Python 3,
raw_input()
был переименован вinput()
.Из того, что нового в Python 3.0, второй раздел раздела Встроенные .
источник
input()
иraw_input()
.a = input()
примет ввод пользователя и введет его в правильный тип. Например: если пользователь вводит 5, то значение вa
является целым числом 5.a = raw_input()
будет принимать пользовательский ввод и помещать его в виде строки. Например: если пользователь вводит 5, то значение вa
это строка «5», а не целое число. Подумал, что это может быть хорошей информацией для новичков в питоне, как я.Это работает в Python 3.x и 2.x:
источник
global input
вверху вызывающей функции.import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
.__builtin__
переименованbuiltins
в Python 3. Оба доступны как__builtins__
в CPython.getattr(__builtins__, 'raw_input', input)
возвращает значение по умолчанию при импорте в Python 2.7.2.Надежный способ решения этой проблемы
six - это модуль, который исправляет многие из 2/3 общих болевых точек кода.
источник
from six.moves import input as raw_input
, вы можете сохранитьraw_input
в своем скрипте и запустить с использованием обеих версий Python.Как уже отмечали другие, эта
raw_input
функция была переименованаinput
в Python 3.0, и вам действительно лучше справиться с более современной книгой, но я хочу отметить, что есть лучшие способы увидеть результаты вашего сценария. ,Из вашего описания я думаю, что вы используете Windows, вы сохранили
.py
файл, а затем дважды щелкаете по нему, чтобы запустить его. Окно терминала, которое появляется, закрывается, как только ваша программа заканчивается, поэтому вы не можете видеть, каков был результат вашей программы. Чтобы решить эту проблему, ваша книга рекомендует добавить операторraw_input
/,input
чтобы дождаться, когда пользователь нажмет ввод. Однако, как вы видели, если что-то пойдет не так, например, ошибка в вашей программе, этот оператор не будет выполнен, и окно закроется, и вы не сможете увидеть, что пошло не так. Возможно, вам будет проще использовать командную строку или IDLE.Используйте командную строку
Когда вы смотрите на окно папки, в котором находится ваша программа на Python, удерживайте нажатой клавишу Shift и щелкните правой кнопкой мыши в любом месте белой области фона окна. Всплывающее меню должно содержать запись «Открыть окно команд здесь». (Я думаю, что это работает в Windows Vista и Windows 7.) Это откроет окно командной строки, которое выглядит примерно так:
Чтобы запустить вашу программу, введите следующее (подставив имя вашего скрипта):
... и нажмите ввод. (Если вы получаете сообщение об ошибке, что «python» не является распознанной командой, см. Http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Когда ваша программа завершает работу, независимо от того, успешно она завершается или нет, окно останется открытым, и снова появится командная строка для ввода другой команды. Если вы хотите снова запустить вашу программу, вы можете нажать стрелку вверх, чтобы вызвать предыдущую команду, которую вы ввели, и нажать Enter, чтобы запустить ее снова, вместо того, чтобы вводить имя файла каждый раз.
Используйте IDLE
IDLE - это простой редактор программ, который устанавливается вместе с Python. Среди других функций он может запускать ваши программы в окне. Щелкните правой кнопкой мыши по вашему
.py
файлу и выберите «Редактировать в IDLE». Когда ваша программа появится в редакторе, нажмите F5 или выберите «Запустить модуль» в меню «Выполнить». Ваша программа будет работать в окне, которое остается открытым после ее завершения, и в котором вы можете ввести команды Python для немедленного запуска.источник
pythonw -m idlelib.idle
Решение Timmerman отлично работает при запуске кода, но если вы не хотите получать
Undefined name
ошибки при использовании pyflakes или подобного линтера, вы можете использовать следующее:источник
Redefining built-in 'input' (redefined-builtin)
,Unable to import '__builtin__' (import-error)
,Invalid constant name "input" (invalid-name)
.flake8
илиpyflakes
так, чтобы не занимать весь день бессмысленными предупреждениями.Вот фрагмент кода, который я вставил в свои скрипты, который я не хочу запускать в среде py2 / 3-agnostic:
Теперь вы можете использовать real_raw_input. Это довольно дорого, но коротко и читабельно. Использование необработанного ввода обычно требует много времени (ожидание ввода), поэтому это не важно.
Теоретически вы можете даже назначить raw_input вместо real_raw_input, но могут быть модули, которые проверяют наличие raw_input и ведут себя соответственно. Лучше оставаться в безопасности.
источник
Возможно, это не лучшее решение, но перед тем, как приехать сюда, я просто сделал это на лету, чтобы продолжать работать, не отрываясь от учебы.
Затем, когда я запускаю
raw_input('Enter your first name: ')
сценарий, над которым я работал, он записывает его так, как делаетinput()
.Может быть причина не делать этого, с которой я еще не сталкивался!
источник
raw_input = input
?