Как использовать raw_input в Python 3 - PullRequest
481 голосов
/ 05 июня 2009
import sys
print(sys.platform)
print(2**100)
raw_input()

Я использую Python 3.1 и не могу raw_input "заморозить" всплывающее окно с досами. Книга, которую я читаю, предназначена для Python 2.5, и я использую Python 3.1

Что мне сделать, чтобы это исправить?

Ответы [ 9 ]

894 голосов
/ 05 июня 2009

raw_input() был переименован в input()

С http://docs.python.org/dev/py3k/whatsnew/3.0.html

105 голосов
/ 06 сентября 2011

Это работает в Python 3.x и 2.x:

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
38 голосов
/ 29 июля 2015

Надежный способ решить эту проблему -

from six.moves import input

six - это модуль, который исправляет многие из 2/3 общих болевых точек основного кода.

17 голосов
/ 23 февраля 2012

В Python 3.xx вам просто нужно input(), а не raw_input()

14 голосов
/ 23 февраля 2012

Как уже отмечали другие, функция raw_input была переименована в input в Python 3.0, и вам действительно лучше справиться с более современной книгой, но я хочу отметить, что есть лучшие способы увидеть вывод вашего скрипта.

Из вашего описания я думаю, что вы используете 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

... и нажмите ввод. (Если вы получаете сообщение об ошибке, что «python» не является распознанной командой, см. http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96). Когда ваша программа завершит работу, независимо от того, успешно она завершится или нет, окно останется открытым, и снова появится командная строка. для вас, чтобы ввести другую команду. Если вы хотите снова запустить вашу программу, вы можете нажать стрелку вверх, чтобы вызвать предыдущую введенную вами команду, и нажать Enter, чтобы запустить ее снова, вместо того, чтобы вводить имя файла каждый раз.

Использовать IDLE

IDLE - простой редактор программ, который устанавливается вместе с Python. Среди других функций он может запускать ваши программы в окне. Щелкните правой кнопкой мыши на файле .py и выберите «Редактировать в режиме бездействия». Когда ваша программа появится в редакторе, нажмите F5 или выберите «Запустить модуль» в меню «Выполнить». Ваша программа будет работать в окне, которое остается открытым после ее завершения, и в котором вы можете ввести команды Python для немедленного запуска.

7 голосов
/ 20 августа 2013

Решение Timmerman прекрасно работает при запуске кода, но если вы не хотите получать ошибки Undefined name при использовании pyflakes или подобного линтера, вы можете использовать следующее:

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass
6 голосов
/ 22 сентября 2014

Вот фрагмент кода, который я вставил в свои скрипты, который я не хочу запускать в среде 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_input вместо real_raw_input, но могут быть модули, которые проверяют наличие raw_input и ведут себя соответственно. Лучше оставаться в безопасности.

1 голос
/ 25 августа 2017

Возможно, это не лучшее решение, но до того, как я пришел сюда, я просто сделал это на лету, чтобы продолжать работать, не отрываясь от учебы.

def raw_input(x):
  input(x)

Затем, когда я запускаю raw_input('Enter your first name: ') для скрипта, над которым я работал, он захватывает его, как это делает input().

Может быть причина не делать этого, с которой я еще не сталкивался!

0 голосов
/ 30 мая 2019

Функция raw_input () была удалена из Python 3.x. взять входной python2 имел две функции, которые были input () и raw_input ()

Если вы хотите иметь ту же особенность 2.x в 3.x для получения входного параметра, перейдите по этой вики-ссылке https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...