кодесурса
«Python

Python Math: разбирать математические формулы и ставить круглые скобки вокруг умножения и деления

script1adsense2code
script1adsense3code

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code