Python Math: разбирать математические формулы и ставить круглые скобки вокруг умножения и деления
Python Math: упражнение 60 с решением
Напишите программу на Python для анализа математических формул и поместите скобки вокруг умножения и деления.
Пример решения : -
Код Python:
#https://gist.github.com/ohaz/ed0b14a487b0569aad2d
import ast
def recurse(node):
if isinstance(node, ast.BinOp):
if isinstance(node.op, ast.Mult) or isinstance(node.op, ast.Div):
print('(', end='')
recurse(node.left)
recurse(node.op)
recurse(node.right)
if isinstance(node.op, ast.Mult) or 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:
for child in ast.iter_child_nodes(node):
recurse(child)
def search_expr(node):
returns = []
for child in ast.iter_child_nodes(node):
if isinstance(child, ast.Expr):
return child
returns.append(search_expr(child))
for ret in returns:
if isinstance(ret, ast.Expr):
return ret
return None
formula ='4+5*7/2'
a = ast.parse(formula)
expr = search_expr(a)
if expr is not None:
recurse(expr)
print()
Пример вывода:
4 + ((5 * 7) / 2)
Блок - схема:
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу на Python для разделения дробных и целых частей числа с плавающей запятой.
Далее: Напишите программу на Python для описания линейной регрессии.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code