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

Нужно вытащить оператор + из строки "+" и использовать его

для сложения чисел
Как это можно сделать?

75 ответов

23 просмотра

какой-нибудь eval

а вообще идея странная имхо

sum(text.split("+"))

Алиса Кассель-Королёва
ээээ ты чего

ну откуда я знаю, что у него там

rasput
ну откуда я знаю, что у него там

ну откуда я знаю, что у неготам

solarmolly-Pilipenko Автор вопроса
Patrick [in search of work]
sum(text.split("+"))

не то, в строке содержится только сам оператор (он может быть не только +, но и / и * и че угодно)

solarmolly Pilipenko
не то, в строке содержится только сам оператор (он...

не то, в строке содержится только сам оператор (он может быть не только +, но и / и * и че угодно)

1

solarmolly Pilipenko
не то, в строке содержится только сам оператор (он...

парси строку строй AST где узлами будут операции а ветвями операнды далее вычисляй дерево через какой нить паттерн посититель

Игорь Игорян
парси строку строй AST где узлами будут операции а...

Опасные вы ребята. Там задачка детская а вы уже аст достали

ах, ёпт, ну ифами

а ну это обратная польская нотация

solarmolly-Pilipenko Автор вопроса
rasput
ах, ёпт, ну ифами

разве не должно быть способа получше?

На 3.10 это займет 9 строк

Игорь Игорян
а ну это обратная польская нотация

да при чём тут она, тут даже парсить ничего не надо

solarmolly Pilipenko
разве не должно быть способа получше?

можно сделать словарь с соответствием оператор - функция

если без эвала, то можно сделать словарь который будет мапить операцию на конкретную лямбду, которая уже в свою очередь будет выполнять операции, в кортеже использовать первый аргумент как ключ для словаря а следующие два как операнды

Игорь Игорян
если без эвала, то можно сделать словарь который б...

ну, способов решить задачу больше 3, значит как её решать уже зависит от решающего (работает только для cp)

Patrick [in search of work]
💩

давай без эвала красивее чето придумай

Игорь Игорян
убейся

Достойный соперник

Patrick [in search of work]
Ифы будут с 100 раз красивее

на каждую операцию по ифу ? гениально, ходят слухи что больше 2 ифов уже пахнет говном

rasput
switch, лол

https://t.me/ru_python_beginners/1972491

неа. в обратной польской - суффикс а тут префикс, как в лиспе

Zart
неа. в обратной польской - суффикс а тут префикс, ...

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

Игорь Игорян
че то мне запомнилось что в польской префикс именн...

ну. в польской префкисная, в обратной - суффиксная

rasput
ну. в польской префкисная, в обратной - суффиксная

Ты смеешь перечит слово самому умному в чате? Да кто ты такой

rasput
ну. в польской префкисная, в обратной - суффиксная

"Обра́тная по́льская за́пись (англ. Reverse Polish notation, RPN) — форма записи математических и логических выражений, в которой операнды расположены перед знаками операций. " не угадал

Patrick [in search of work]
8 строк?

а ты чистоту кода по кол-ву строк считаешь ? сочувствую

Patrick [in search of work]
Так это ты за простыню высрал

написать алгортим полностью в ифах это не простыня ?

Игорь Игорян
написать алгортим полностью в ифах это не простыня...

8 строк вся функция. У тебя проблемы с замерами простынь

Patrick [in search of work]
Так это ты за простыню высрал

Давай обьективно, неужели вот это: 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 = { '+...

ops = { '+': operator.add, '-': operator.sub, '/': operator.truediv, '*': operator.mul, } op, a, b = ("+", 1, 2) r_ = ops[op](a, b)

Игорь Игорян
Давай обьективно, неужели вот это: ops = { '+...

на 4х вариантах как-то пофигу. Оба выглядят приемлемо.

Игорь Игорян
Давай обьективно, неужели вот это: ops = { '+...

op, a, b = ("+", 1, 2) if op == '+': return a + b elif op == '-': return a - b elif op == '/': return a / b else: return a * b

Tishka17
ops = { '+': operator.add, '-': operator.s...

согласен, но я о том что лучше замапить действия на словарь нежели писать пелену ифов, ну в данном конкретном случае

Patrick [in search of work]
op, a, b = ("+", 1, 2) if op == '+': return a + b...

отвратительно. кто сказал что в else всегда попадет * ?

Alex
отвратительно. кто сказал что в else всегда попаде...

ну, человек ещё выше написал именно так да и в задаче сказано так так что я на это глаза закрыл

Tishka17
Зачем?

Мы на кодеварс. Низя

Patrick [in search of work]
Чо

operator - билтин модуль

Patrick [in search of work]
Мы на кодеварс. Низя

Ну два варианта уже были

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта