Как использовать raw_input в Python 3

import sys
print(sys.platform)
print(2**100)
raw_input()

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

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

Ответ 2

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

# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))

Ответ 3

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

from six.moves import input

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

Ответ 4

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

Ответ 5

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

Из вашего описания, я думаю, вы используете Windows, вы сохранили файл .py, а затем дважды щелкните по нему, чтобы запустить его. Окно терминала, которое всплывает, закрывается, как только заканчивается ваша программа, поэтому вы не можете видеть, каков результат вашей программы. Чтобы решить эту проблему, ваша книга рекомендует добавить оператор raw_input/input, чтобы ждать, пока пользователь не нажмет на ввод. Однако, как вы видели, если что-то пойдет не так, например ошибка в вашей программе, этот оператор не будет выполнен, и окно закроется, если вы не сможете понять, что пошло не так. Возможно, вам будет проще использовать командную строку или IDLE.

Используйте командную строку

Когда вы смотрите на окно папки, содержащее вашу программу Python, удерживайте нажатой клавишу сдвига и щелкните правой кнопкой мыши в любом месте области белого фона в окне. В появившемся меню должна содержаться запись "Открыть окно команды здесь". (Я думаю, что это работает в Windows Vista и Windows 7.) Это откроет окно командной строки, которое выглядит примерно так:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

    C:\Users\Weeble\My Python Program>_

Чтобы запустить вашу программу, введите следующую команду (заменив имя script):

    python myscript.py

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

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

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

Ответ 6

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

try:
    import __builtin__
    input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
    pass

Ответ 7

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

Ответ 8

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

def raw_input(x):
  input(x)

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

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

Ответ 9

Используйте 2to3

2to3 - это программа (вам не нужно ее устанавливать), которая преобразует python 2 в python 3

Ответ 10

Скачок между 2.x и 3.x не слишком экстремален, но он меняет некоторые вещи. raw_input теперь просто вводится, если вы хотите использовать старый ввод, просто выполните:

eval(input())

Так что просто забудьте raw:)

Ответ 11

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

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