170 похожих чатов

У меня даётся на вход 2 числа и один знак(плюс,

минус, деление, умножение)
Как можно было бы сократить код, не используя проверку на знак через if, elif... Есть способ по короче, чтобы например, в принте сразу вывести результат?

26 ответов

6 просмотров
Solis Occasus- Автор вопроса

Думал получить 2 числа через int, а знак через chr, но не получилось(

Даётся и? Нужно выполнить арифметическое действие?

Solis Occasus- Автор вопроса
PrivateOnlyZ
Даётся и? Нужно выполнить арифметическое действие?

Дада, арифметическое действие, забыл уточнить

Только перебором скорее всего, у тебя условно ÷ должен превратиться в /

Solis Occasus- Автор вопроса
Solis Occasus
Дада, арифметическое действие, забыл уточнить

Можешь попробовать найти какой-нибудь arithmetic expression evaluator

Solis Occasus- Автор вопроса
Иван
Можешь попробовать найти какой-нибудь arithmetic e...

а, ну понял, блин я думал, что в питоне есть встроенная штука, чтобы сразу выполнить арифметическое действие без этих гребанных if and elif

Solis Occasus
а, ну понял, блин я думал, что в питоне есть встро...

Словарик с функциями. Если я правильно понял, чего ты хочешь.

Solis Occasus
а, ну понял, блин я думал, что в питоне есть встро...

покажи инпут на примере и что ты хочешь получить

Solis Occasus
а, ну понял, блин я думал, что в питоне есть встро...

!!!вредный совет!!! ты можешь использовать какой-нибудь eval, но он будет запускать вообще любой питон код, а не только арифметику

Solis Occasus- Автор вопроса
Solis Occasus
123 18213 +

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)

PrivateOnlyZ
import operator ops = {'+': operator.add, '-'...

на самом деле это практически ничего не меняет

PrivateOnlyZ
import operator ops = {'+': operator.add, '-'...

и по-моему код стал менее читаемый, чем обычные ифы

Вы откуда взяли про многофункциональный калькулятор и принесли целый pyparsing? По вводным там банальный разбор ПОЛИЗ и всё.

evle
Вы откуда взяли про многофункциональный калькулято...

ладно, я просто не правильно понял вопрос

Solis Occasus- Автор вопроса
PrivateOnlyZ
import operator ops = {'+': operator.add, '-'...

ops[op](num1, num2) А не могли бы объяснить эту конструкцию? Или как она вообще называется, чтобы загуглить? Впервые вижу

Solis Occasus
ops[op](num1, num2) А не могли бы объяснить эту ко...

достается функция из словаря и вызывается с аргументами🤔

Solis Occasus
ops[op](num1, num2) А не могли бы объяснить эту ко...

Создал словарь 'символ знака': 'функция из модуля operator' Потом по ключу тащу нужную функцию

Solis Occasus
ops[op](num1, num2) А не могли бы объяснить эту ко...

Словарь, обращение по ключу и вызов функции.

Solis Occasus- Автор вопроса
evle
Словарь, обращение по ключу и вызов функции.

А, понял Сначала не понял, что это функция с аргументами Спасибо

Solis Occasus
А, понял Сначала не понял, что это функция с аргум...

К примеру ты написал знак '*', он идёт к словарю, видит, что ключу '*' соответствует значение operator.mul, в итоге ops[op](a,b) превращается в operator.mul(a,b)

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
А что ты вообще делаешь ?
Yesgoter
13
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
18
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
Подскажите, почему в правом коде с1 дополняется до 8байт, а не до 4?
Sergey
9
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
Карта сайта