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

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

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

26 ответов

19 просмотров
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)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта