Форум сайта python.su
Button: text: '=' on_press: self.lbl.text = str(eval(self.lbl.text))
Button: text: '^' on_press: label.text += '**'
Прикреплённый файлы:
Сни3мок.PNG (26,0 KБ)
Офлайн
makson29977разделить математику и оторисовку и заменять на “**” на “^” при оторисовке.
Как сделать так, чтобы отображалось “^”, но в eval() шло “**”
[code python][/code]
Офлайн
PEHDOMПредлагаешь вместо eval() прописать каждый оператор?
Офлайн
makson29977Ну вообще использовать eval() нужно очень осторожно так что идея разбирать строку на операторы и числа вобщемто вполне себе здравая. Но в данном случае предлагаю для начала просто разделить отрисовку и математику. Для математики одна строка, дял отрисовки другая. Соотвевенно для отрисовки заменяешь “**” на “^” и выводишь (или наоборот)
Предлагаешь вместо eval() прописать каждый оператор?
in_expr = input() math_expr=in_expr.replace('^', '**') res = eval(math_expr) print('{}={}'.format(in_expr, res)) >>> 2^3 2^3=8 >>>
[code python][/code]
Отредактировано PEHDOM (Май 12, 2019 00:52:43)
Офлайн
Красным обведен код, который я добавил. Все работает!!!
Прикреплённый файлы:
Ответ.PNG (22,6 KБ)
Офлайн