для сложения чисел
Как это можно сделать?
какой-нибудь eval
а вообще идея странная имхо
codewars))))
sum(text.split("+"))
ээээ ты чего
ну откуда я знаю, что у него там
ну откуда я знаю, что у неготам
@Tishka17 эхо бот
не то, в строке содержится только сам оператор (он может быть не только +, но и / и * и че угодно)
не то, в строке содержится только сам оператор (он может быть не только +, но и / и * и че угодно)
1
парси строку строй AST где узлами будут операции а ветвями операнды далее вычисляй дерево через какой нить паттерн посититель
Опасные вы ребята. Там задачка детская а вы уже аст достали
ах, ёпт, ну ифами
а ну это обратная польская нотация
разве не должно быть способа получше?
На 3.10 это займет 9 строк
да при чём тут она, тут даже парсить ничего не надо
тут конечно не надо
я про парсинг писал пока не видел задачу
можно сделать словарь с соответствием оператор - функция
если без эвала, то можно сделать словарь который будет мапить операцию на конкретную лямбду, которая уже в свою очередь будет выполнять операции, в кортеже использовать первый аргумент как ключ для словаря а следующие два как операнды
давай лучше
ну, способов решить задачу больше 3, значит как её решать уже зависит от решающего (работает только для cp)
давай без эвала красивее чето придумай
Ифы будут с 100 раз красивее
Достойный соперник
на каждую операцию по ифу ? гениально, ходят слухи что больше 2 ифов уже пахнет говном
https://t.me/ru_python_beginners/1972491
м, понял к чему там 3.10
итогово будет простыня кода
Сдаюсь. Сильные неоспоримые аргументы.
простыня кода тоже не аргумент ?
неа. в обратной польской - суффикс а тут префикс, как в лиспе
че то мне запомнилось что в польской префикс именно, ну ладно
ну. в польской префкисная, в обратной - суффиксная
Ты смеешь перечит слово самому умному в чате? Да кто ты такой
"Обра́тная по́льская за́пись (англ. Reverse Polish notation, RPN) — форма записи математических и логических выражений, в которой операнды расположены перед знаками операций. " не угадал
операнды перед
а ты чистоту кода по кол-ву строк считаешь ? сочувствую
Так это ты за простыню высрал
написать алгортим полностью в ифах это не простыня ?
8 строк вся функция. У тебя проблемы с замерами простынь
Давай обьективно, неужели вот это: ops = { '+': lambda a, b: a + b, '-': lambda a, b: a - b, '/': lambda a, b: a / b, '*': lambda a, b: a * b, } op, a, b = ("+", 1, 2) r_ = ops[op](a, b) хуже чем это: op, a, b = ("+", 1, 2) if op == '+': r_ = a + b elif op == '-': r_ = a - b elif op == '/': r_ = a / b else: r_ = a * b
да как же ты заебал уже
ops = { '+': operator.add, '-': operator.sub, '/': operator.truediv, '*': operator.mul, } op, a, b = ("+", 1, 2) r_ = ops[op](a, b)
на 4х вариантах как-то пофигу. Оба выглядят приемлемо.
op, a, b = ("+", 1, 2) if op == '+': return a + b elif op == '-': return a - b elif op == '/': return a / b else: return a * b
согласен, но я о том что лучше замапить действия на словарь нежели писать пелену ифов, ну в данном конкретном случае
В данном случае пофиг вообще
отвратительно. кто сказал что в else всегда попадет * ?
ну, человек ещё выше написал именно так да и в задаче сказано так так что я на это глаза закрыл
open your eyes
это билтин, зачем?
Мы на кодеварс. Низя
operator - билтин модуль
Ну два варианта уже были
Обсуждают сегодня