Как хранить выражение в input()?

user7065

Новичок
Пользователь
Июл 31, 2020
17
1
3
В программе существует несколько переменных, одни из них 'cd' и 'x'. Переменная 'x' четко указана, а вот переменную 'cd' пользователь указывает сам через input(). Предполагается, что в 'cd' будут указывать выражение с x, как например x + 8. Так вот, необходимо, чтобы это самое выражение в 'cd' было int или float, дабы его можно было сравнивать с другими числами, но оно оказывается str. При попытке перевести в другой формат выдает следующую ошибку:

traceback (most recent call last):
File "/home/user/PycharmProjects/pythonequation/copy.py", line 7, in <module>
int(cd)
ValueError: invalid literal for int() with base 10: 'x + 3 * 3'.

Как сделать так, чтобы можно было сравнить 'cd' с другим числом? Если 'cd' указывать напрямую в коде программы, а не через input(), то все хорошо. Заранее спасибо за помощь :)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
Python:
cd = float(input('Введите число: '))
x = 1
print(x + cd)
 

user7065

Новичок
Пользователь
Июл 31, 2020
17
1
3
Решил сам проблему, для решения задачи нужно было создать ещё одну переменную в которой будет хранится, int(eval(cd)). Eval посчитает то, что хранится в cd используя текущее значение x, после чего вернёт одно число, которое с лёгкостью можно перенести в int или float. Доволен как слон, всем спасибо).
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
В программе существует несколько переменных, одни из них 'cd' и 'x'. Переменная 'x' четко указана, а вот переменную 'cd' пользователь указывает сам через input(). Предполагается, что в 'cd' будут указывать выражение с x, как например x + 8. Так вот, необходимо, чтобы это самое выражение в 'cd' было int или float, дабы его можно было сравнивать с другими числами, но оно оказывается str. При попытке перевести в другой формат выдает следующую ошибку:

traceback (most recent call last):
File "/home/user/PycharmProjects/pythonequation/copy.py", line 7, in <module>
int(cd)
ValueError: invalid literal for int() with base 10: 'x + 3 * 3'.

Как сделать так, чтобы можно было сравнить 'cd' с другим числом? Если 'cd' указывать напрямую в коде программы, а не через input(), то все хорошо. Заранее спасибо за помощь :)
x = ...
cd = int(input()) + x

int конвертирует в число, а input всего лишь возвращает введеную строку, так что вы пытаетесь конвертировать в целое число строку, в которое содержатся пробелы и другие лишние знаки
 
  • Мне нравится
Реакции: user7065

Форум IT Специалистов