Как получить пользовательский ввод с клавиатуры в Python 2?

Я написал функцию в Python, которая запрашивает у пользователя два номера и добавляет их. Он также предлагает пользователю ввести город и распечатать его. По какой-то причине, когда я запускаю его в оболочке, я получаю «имя не определено» после входа в город.

def func_add(num1, num2): a = input("your city") print a return num1 + num2 

6 Solutions collect form web for “Как получить пользовательский ввод с клавиатуры в Python 2?”

Если вы используете Python 2, вам нужно использовать raw_input :

 def func_add(num1, num2): a = raw_input("your city") print a return num1 + num2 

input вызывает то, что вы напечатаете, чтобы оцениваться как выражение Python, поэтому вы в конечном итоге получаете

 a = whatever_you_typed 

Поэтому, если нет переменной с именем whatever_you_typed вы получите NameError .

С raw_input он просто сохраняет все, что вы raw_input в строке, поэтому в итоге вы получаете

 a = 'whatever_you_typed' 

который указывает на эту строку, что вы хотите.

 input() 

выполняет (фактически, оценивает) выражение, подобное тому, которое было фрагментом кода, ища объект с введенным вами именем, вы должны использовать

 raw_input() 

Это угроза безопасности, и поскольку Python 3.x, input () ведет себя как raw_input (), который был удален.

вы хотите использовать raw_input . input подобен eval

raw_input() этого вы хотите использовать raw_input() . input() ожидает Python, который затем получает eval .

Вы хотите raw_input , а не input .

 input(...) input([prompt]) -> value Equivalent to eval(raw_input(prompt)). 

В отличие от …

 raw_input(...) raw_input([prompt]) -> string Read a string from standard input. The trailing newline is stripped. If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError. On Unix, GNU readline is used if enabled. The prompt string, if given, is printed without a trailing newline before reading. 

В Python 2.x input запрашивает выражение Python (например, num1 + 2 ), которое затем оценивается. Вы хотите raw_input который позволяет запросить произвольные строки.

  • В чем разница между функциями range и xrange в Python 2.X?
  • Что означает `<>` в Python?
  • Полезно ли использовать вход Python над raw_input?
  • Почему 008 и 009 недействительные ключи для Python dicts?
  • Как Python сравнивает строку и int?
  • Ассоциативность «in» в Python?
  • Существуют ли в Python словарные возможности? (Проблема с функцией return dict)
  • Разница между IOError и OSError?
  • Python - лучший язык программирования в мире.