Для Python 2 вы хотите raw_input
, а не input
. Первый будет читать строку. Последний будет читать строку и попытаться выполнить ее, не рекомендуется, если вы не хотите, чтобы ваш код был поврежден человеком, который вводил данные.
Например, они могут делать что-то вроде вызовов произвольных функций, так как в следующем примере:
def sety99():
global y
y = 99
y = 0
input ("Enter something: ")
print y
Если вы запустите этот код под Python 2 и введите sety99()
, вывод будет 99
, несмотря на то, что ни в коем случае ваш код (в его нормальной поток выполнения) целенаправленно устанавливают y
на что угодно, кроме нуля (он выполняет функцию, но эта функция никогда явно не вызывается вашим кодом). Причина этого в том, что вызов input(prompt)
эквивалентен eval(raw_input(prompt))
.
См. здесь для подробностей gory.
Имейте в виду, что Python 3 исправляет это. Функция ввода там ведет себя так, как вы ожидали.