Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Питон помогите решить.

ОПГ Ученик (11), на голосовании 1 год назад
Написать программу, которая использует очередь для реализации простого калькулятора: пользователь вводит числа и операции, которые добавляются в очередь, а затем происходит выполнение операций в порядке очереди и вывод результата на экран.
Голосование за лучший ответ
Никита Демин Мыслитель (7081) 1 год назад
Хорошо, вот программа, которая использует очередь для реализации простого калькулятора на Python:
 from queue import Queue 

def calculator(queue):
"""Вычисляет выражение из очереди."""
stack = []
while queue:
x = queue.get()
if x in "+-*/":
y = stack.pop()
x = stack.pop()
stack.append(eval(f"{x}{x}={y}"))
else:
stack.append(float(x))
return stack[0]

def main():
"""Главная функция."""
queue = Queue()
while True:
x = input("Введите число или операцию: ")
if x in "+-*/":
queue.put(x)
elif x == "":
break
else:
queue.put(float(x))
result = calculator(queue)
print(f"Результат: {result}")

if __name__ == "__main__":
main()
Эта программа работает следующим образом:

Функция calculator() принимает в качестве аргумента очередь и вычисляет выражение из нее.
Функция использует стек для хранения промежуточных результатов.
Каждый элемент из очереди добавляется в стек, если это число, или используется для выполнения операции над двумя верхними элементами стека, если это операция.
Функция возвращает результат вычисления.
Главная функция запрашивает у пользователя числа и операции, пока он не введет пустую строку.
Затем она добавляет эти числа и операции в очередь.
После этого функция calculator() вычисляет выражение из очереди и выводит результат на экран.
Вот пример работы программы:
 Введите число или операцию: 1 
Введите число или операцию: 2
Введите число или операцию: +
Введите число или операцию: 3
Введите число или операцию: =
Результат: 6
Вы можете изменить программу, добавив в неё новые операции, например, ^ для возведения в степень и % для деления по модулю.
Похожие вопросы