Функция Eval не работает, и ошибка говорит, что это должна быть строка - Python

Я просто не знаю, что делать...

Функция Eval не работает, и ошибка говорит, что это должна быть строка - Python

Функция Eval не работает, и ошибка говорит, что это должна быть строка - Python

какую версию питона вы используете? и не публикуйте изображения кода или ошибок, предоставляйте их в виде правильно отформатированного текста

Matiiss 19.03.2022 00:36

Если все, что вы хотите сделать, это добавить ввод + 3, вы можете просто сделать x = int(input("Adds 3")), если у вас есть правильная версия

Blue Robin 19.03.2022 00:39

в Python2 (который вы не должны использовать, но, исходя из ошибки, это то, что вы используете) input уже выполняет оценку, так что просто сделайте x = input('heyy: ')

Matiiss 19.03.2022 00:40

Не используйте Python 2, не используйте eval. Если вам нужно использовать Python 2, правильный код — x = int(raw_input("heyy: ")).

Ry- 19.03.2022 00:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
4
46
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Встроенная функция eval() предназначена для выполнения вещей в строковом формате.

Чтобы исправить ошибку, которую вы получаете, либо удалите eval(), либо поместите input("heyy: ") в кавычки:

x = eval("input(\"heyy: \")")

(Обратная косая черта перед кавычками предназначена для экранирования кавычки, иначе кавычка в строке в input() закроет кавычку, которую вы открыли первой)

Кроме того, обе функции eval() и input() будут возвращать строку, вам нужно преобразовать ее в целое число, чтобы добавить к ней 5:

x = int(x)
eval не обязательно возвращает строку и не будет input в Python2, ваши первые 2 предложенных решения будут работать (если OP использует Python2)
Matiiss 19.03.2022 00:42

@Matiiss eval() возвращает то, что вернет переданная ему строка. Кроме того, поскольку OP использовал круглые скобки для печати чего-либо, мы можем понять, что это не Python 2. Итак, необходимо преобразовать в целое число.

Yılmaz Alpaslan 19.03.2022 00:45

оба утверждения неверны, evalвозвращает результат оцениваемого выражения, круглые скобки можно использовать и в Python2, а OP использует Python2 на основе полученного исключения, которого они не получили бы в Python3

Matiiss 19.03.2022 00:47

Я сказал то же самое, просто я не знаю таких терминов, как (оценочное выражение), поэтому мне пришлось использовать плохой язык, чтобы выразить то, что я имею в виду. Хотя второго я не знал.

Yılmaz Alpaslan 19.03.2022 00:50

это было взято из документации... круглые скобки - это просто круглые скобки, обычно они используются для вызова функции, но их также можно использовать для группировки вещей, создания кортежей и некоторых других вещей, вероятно, в случае OP это то же самое, что и использование круглых скобок с return (что-то вроде return (value1, value2) (что не обязательно)), это просто ключевое слово, в отличие от Python3, где это функция

Matiiss 19.03.2022 00:52

Я вижу, спасибо за информацию.

Yılmaz Alpaslan 19.03.2022 00:53
Ответ принят как подходящий

попробуйте использовать инт

x = int(input("Enter an integer : "))
print(x+3)

используя оценку:

Python eval() function parse the expression argument and evaluate it as a python expression and runs python expression(code) within the program.

x = int(input("Enter the value : "))
print(eval(f"x+{3}"))

выход :

$ python3 test.py
Enter the value : 5
8

для них это будет работать так же просто x = input('hey: ')

Matiiss 19.03.2022 00:40

Другие вопросы по теме