@Rip_Hunter

Перевод символов в Python в int?

Подскажите полуйста почему Python не может перевести математические знаки (*, +, - ...) с типа str в тип int? Суть проблемы заклюсается в том что у меня есть строка "150 x 81" (с пробелами) и мне нужно посчитать этот пример. Если просто заменить "х" на "*", то после python не даёт конвертировать "*" в тип int.
  • Вопрос задан
  • 1409 просмотров
Решения вопроса 1
Tomio
@Tomio
backend developer (python, php)
Не знаю, зачем вам это, но всё прекрасно работает:

>>> literal_expr = '150 x 81'
>>> eval(literal_expr.replace('x', '*'))
12150
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@anerev
Оп:
x = '150 x 81'
x1 = x.split('x')
y = int(x1[0]) * int(x1[1]) #12150
Ответ написан
Комментировать
@TomRiddle
Я здесь, потому что ничего не нагуглил XD
У операторов +, *, -, / нет типа - они не относятся ни к int, ни к float, ни к bool, поэтому и перевести их в какой-то тип нельзя.
Но можно их считать и задать алгоритм операции. Вот один из вариантов для умножения. По аналогии можно использовать и с другими операциями (/, +, -, **, // и т.д.)
string = "150 x 5"
for index in range(len(string.split())):
    if string.split()[index] == "x":
        answer = int(string.split()[index-1]) * int(string.split()[index+1])
print (answer)

Но это подходит для простого уравнения с двумя числами. Если уравнения более сложные, то лучше использовать функцию eval(string). Эта функция еще и сохранит алгебраические правила (сначала делать умножение и деление, операции в скобках, а потом уже сложение и вычитание и т.д.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы