минус, деление, умножение)
Как можно было бы сократить код, не используя проверку на знак через if, elif... Есть способ по короче, чтобы например, в принте сразу вывести результат?
Думал получить 2 числа через int, а знак через chr, но не получилось(
Даётся и? Нужно выполнить арифметическое действие?
Дада, арифметическое действие, забыл уточнить
Как выглядит ввод?
Только перебором скорее всего, у тебя условно ÷ должен превратиться в /
123 18213 +
Можешь попробовать найти какой-нибудь arithmetic expression evaluator
а, ну понял, блин я думал, что в питоне есть встроенная штука, чтобы сразу выполнить арифметическое действие без этих гребанных if and elif
Словарик с функциями. Если я правильно понял, чего ты хочешь.
покажи инпут на примере и что ты хочешь получить
!!!вредный совет!!! ты можешь использовать какой-нибудь eval, но он будет запускать вообще любой питон код, а не только арифметику
А, ну да, кстати. Спасибо за идею
import operator ops = {'+': operator.add, '-': operator.sub, '/': operator.truediv, '*': operator.mul } num1 = int(input().strip()) num2 = int(input().strip()) op = input().strip() result = ops[op](num1, num2) print(result)
на самом деле это практически ничего не меняет
и по-моему код стал менее читаемый, чем обычные ифы
Относительно чего?
Он просил без ифов
Вы откуда взяли про многофункциональный калькулятор и принесли целый pyparsing? По вводным там банальный разбор ПОЛИЗ и всё.
ладно, я просто не правильно понял вопрос
ops[op](num1, num2) А не могли бы объяснить эту конструкцию? Или как она вообще называется, чтобы загуглить? Впервые вижу
достается функция из словаря и вызывается с аргументами🤔
Создал словарь 'символ знака': 'функция из модуля operator' Потом по ключу тащу нужную функцию
Словарь, обращение по ключу и вызов функции.
А, понял Сначала не понял, что это функция с аргументами Спасибо
К примеру ты написал знак '*', он идёт к словарю, видит, что ключу '*' соответствует значение operator.mul, в итоге ops[op](a,b) превращается в operator.mul(a,b)
да, спасибо большое) 🤗
Обсуждают сегодня