Python Math: Упражнение 60 с решением
Напишите программу Python для анализа математических формул и заключите в скобки умножение и деление.
Пример решения : —
Код Python:
#https:// gist.github.com/ohaz/ed0b14a487b0569aad2dimport astdef recurse (node): if isinstance (node, ast.BinOp): if isinstance (node.op, ast.Mult) или isinstance (node.op, ast.Div): print ( '(', end = '') recurse (node.left) recurse (node.op) recurse (node.right) if isinstance (node.op, ast.Mult) или isinstance (node.op, ast.Div): print (')', end = '') elif isinstance (node, ast.Add): print ('+', end = '') elif isinstance (node, ast.Sub): print ('-', end = '') elif isinstance (node, ast.Mult): print ('*', end = '') elif isinstance (node, ast.Div): print ('/', end = '') elif isinstance (node, ast.Num): print (node.n, end = '') else: для дочернего элемента в ast.iter_child_nodes (node): recurse (child) def search_expr (node): returns = [] для дочернего элемента в ast.iter_child_nodes (node ): если isi nstance (child, ast.Expr): return child returns.append (search_expr (child)) для ret в return: if isinstance (ret, ast.Expr): return ret return Noneformula = '4 + 5 * 7/2'a = ast.parse (formula) expr = search_expr (a), если expr не равно None: recurse (expr) print ()
Пример вывода:
4 + ((5 * 7)/2)
Блок-схема:
Редактор кода Python: