Почему input (), кажется, приводит к выполнению введенного текста? [Дубликат]

Я думаю, что это должно быть:

if ($i % 2 == 0) 
306
задан Aasmund Eldhuset 24 November 2012 в 16:34
поделиться

5 ответов

Разница в том, что raw_input() не существует в Python 3.x, а input(). На самом деле, старый raw_input() был переименован в input(), а старый input() исчез, но его можно легко моделировать с помощью eval(input()). (Помните, что eval() злой, поэтому, если попытаться использовать более безопасные способы анализа вашего ввода, если это возможно.)

356
ответ дан Sven Marnach 25 August 2018 в 20:33
поделиться

В 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.

22
ответ дан moopet 25 August 2018 в 20:33
поделиться

В Python 2, raw_input() возвращает строку, а input() пытается запустить вход в качестве выражения Python.

Поскольку получение строки было почти всегда тем, что вы хотели, Python 3 делает это с input(). Как говорит Свен, если вам когда-либо понадобится старое поведение, eval(input()) работает.

177
ответ дан Thomas K 25 August 2018 в 20:33
поделиться

Python 2:

  • raw_input() берет именно то, что пользователь набрал и передает в качестве строки.
  • input() сначала принимает raw_input(), а затем выполняет eval() на нем.

Основное отличие состоит в том, что input() ожидает синтаксически корректного оператора python, где raw_input() этого не делает.

Python 3:

  • raw_input() был переименован в input(), поэтому теперь input() возвращает точную строку.
  • Старый input() удален.

Если вы хотите использовать старый input(), то есть вам нужно оценить ввод пользователя в качестве инструкции python, вам нужно сделать это вручную, используя eval(input()).

99
ответ дан varDumper 25 August 2018 в 20:33
поделиться

Я хотел бы добавить немного больше подробностей к объяснению, предоставленному всеми пользователям python 2. raw_input(), который, к настоящему времени, вы знаете, что оценивает, какие данные передаются пользователем в виде строки. Это означает, что python не пытается даже понять введенные данные снова. Все, что он будет учитывать, это то, что введенные данные будут строками, независимо от того, является ли она фактической строкой или int или что-то еще.

В то время как input() пытается понять данные, введенные пользователем. Таким образом, вход, подобный helloworld, даже покажет ошибку как «helloworld is undefined».

В заключение, для python 2, чтобы ввести строку тоже, вам нужно ввести ее как 'helloworld', которая является общей структурой, используемой в python для использования строк.

5
ответ дан Vinoth Vino 25 August 2018 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: