Chinasaokwu Ответов: 2

Выполнение вычислений на Python


Я делаю проект на python. Это префиксный калькулятор, который принимает несколько операндов и несколько операторов. Мне удалось решить этот проект для одного оператора и двух операндов. Это довольно сложно. Нужна помощь:
Обратите внимание, что оператор for должен быть введен первым перед операндами, отсюда и префикс имени калькулятора. Спасибо

Что я уже пробовал:

<pre>def prefix(input):
    op, num1, num2 = input.split(" ")
    num1 = int(num1)
    num2 = int(num2)
    if op == "+":
        return num1 + num2
    elif op == "*":
        return num1 * num2
    elif op == "-":
        return num1 - num2
    elif op == "/":
        return num1 * num2
    else:
        return 0

def repeat():
    x = input("Enter calculation in prefix notation: ")
    y = prefix(x)
    print(y)
    if y == "x":
        print("Goodbye")
    else:
        repeat()
        
repeat()

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я делаю проект на python. Это префиксный калькулятор, который принимает несколько операндов и несколько операторов.

Независимо от деталей, оценка математического выражения включает в себя рекурсивный подход в той или иной форме.
Выражение составляется из произвольного числа элементов и вычисление его состоит из многократного нахождения триплета (оператор, число, число) и замены его своим результатом до тех пор, пока не останется больше триплета. Ваша обязанность-разработать соответствующий код.
+ 1 + 2 4 => + 1 6 => 7
+ + 1 2 4 => + 3 4 => 7


Этот код рекурсивен, когда достаточно простого цикла:
def repeat():
    x = input("Enter calculation in prefix notation: ")
    y = prefix(x)
    print(y)
    if y == "x":
        print("Goodbye")
    else:
        repeat()


Рейтинг:
1

OriginalGriff

Посмотрите на свой код: prefix возвращает 0, если оператор не найден, и никогда не вернет "x" - вы сравниваете результат с x и ожидаете, что он совпадет!

Я бы предложил добавить "x" в качестве оператора, который возвращает "exit", и проверить его вместо этого.