Я думаю, что это должно быть:
if ($i % 2 == 0)
Разница в том, что raw_input()
не существует в Python 3.x, а input()
. На самом деле, старый raw_input()
был переименован в input()
, а старый input()
исчез, но его можно легко моделировать с помощью eval(input())
. (Помните, что eval()
злой, поэтому, если попытаться использовать более безопасные способы анализа вашего ввода, если это возможно.)
В Python 3 не существует raw_input()
, который уже упоминался Sven.
В Python 2 функция input()
оценивает ваш вход.
Пример:
name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
name = input("what is your name ?")
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
В приведенном выше примере Python 2.x пытается оценить harsha как переменную, а не строку. Чтобы избежать этого, мы можем использовать двойные кавычки вокруг нашего ввода, такие как «harsha»:
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
raw_input ()
Функция raw_input () `не оценивает, это будет
Пример:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
Пример:
name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
name = eval(raw_input("what is your name?"))
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
В приведенном выше примере я просто пытался оценить ввод пользователя с функцией eval
.
В Python 2, raw_input()
возвращает строку, а input()
пытается запустить вход в качестве выражения Python.
Поскольку получение строки было почти всегда тем, что вы хотели, Python 3 делает это с input()
. Как говорит Свен, если вам когда-либо понадобится старое поведение, eval(input())
работает.
raw_input()
берет именно то, что пользователь набрал и передает в качестве строки. input()
сначала принимает raw_input()
, а затем выполняет eval()
на нем. Основное отличие состоит в том, что input()
ожидает синтаксически корректного оператора python, где raw_input()
этого не делает.
raw_input()
был переименован в input()
, поэтому теперь input()
возвращает точную строку. input()
удален. Если вы хотите использовать старый input()
, то есть вам нужно оценить ввод пользователя в качестве инструкции python, вам нужно сделать это вручную, используя eval(input())
.
Я хотел бы добавить немного больше подробностей к объяснению, предоставленному всеми пользователям python 2. raw_input()
, который, к настоящему времени, вы знаете, что оценивает, какие данные передаются пользователем в виде строки. Это означает, что python не пытается даже понять введенные данные снова. Все, что он будет учитывать, это то, что введенные данные будут строками, независимо от того, является ли она фактической строкой или int или что-то еще.
В то время как input()
пытается понять данные, введенные пользователем. Таким образом, вход, подобный helloworld
, даже покажет ошибку как «helloworld is undefined
».
В заключение, для python 2, чтобы ввести строку тоже, вам нужно ввести ее как 'helloworld
', которая является общей структурой, используемой в python для использования строк.