LINUX.ORG.RU

Калькулятор на питоне, непонятно как сделать вывод

 , , , ,


1

1

Попробовал сделать простейший калькулятор. Сначала вводим пару чисел, потом вводим операцию, которая будет к этим числам применяться. Вроде бы проще простого.

Сначала идет проверка, что введен один из допустимых знаков (арифметических операций). Потом еще несколько проверок... И доходим собственно до вывода. И тут начинается проблема.

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

print(n1 o n2)

Где «n1» и «n2» - это числа, «o» - операция.

Здесь естественно выйдет ошибка синтаксиса.

Например, такая запись в питоне работает:

print(n1 % n2)

А запись выше работать не будет. Потому что при вводе через input() в «o» записывается строка, и print() воспринимает переменную как строку, а не арифметическую операцию.

Посмотрел преобразование типов, там основные типы int, str, bool... Ничего нужного не нашел. Нет такого типа «арифметическая операция», чтобы можно было преобразовать в переменную и удобно подставить в print().

Неужели придется городить небоскреб из if'ов и print'ов для каждой операции, чтобы это обойти?

Не ищу готовое решение, но хоть намекните...

Ответ на: комментарий от utrack

Ты тролль или правда в это не вдупляешь?

oprs = {'+', int.__add__, '-': int, __sub__, 'o': lambda a, b: a * b - 2}
a, op, b =input().split(' ')
oprs[op](a,b)

Но если серьезно, то это говно конечно, тебе надо то, что system-root написал

Aswed ★★★★★ ()
Ответ на: комментарий от utrack

Ну постановка вопроса оч тролльная. Кроме того ты отвергаешь очевидно правильный ответ. А именно (https://levelup.gitconnected.com/how-to-write-a-formula-string-parser-in-python-5362210afeab). Энивей надеюсь мой пример тебе помог

Aswed ★★★★★ ()

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

print(n1 o n2)

Где «n1» и «n2» - это числа, «o» - операция.

n1 = input()           # вводим: 123
n2 = input()           # вводим: 456
o = input()            # вводим: /
print( n1 + o + n2 )   # пишет: 123/456
anonymous ()