Напишите калькулятор для целочисленных вычислений, который обрабатывает серию команд и выводит результат вычислений по каждой из них.
Каждая команда записывается так: сначала вводится первое число, затем символ операции, затем — при необходимости — второе число. Символы операций (гарантируется, что используются только эти символы):
«+» (сложить два числа),
«-» (вычесть из первого числа второе),
«*» (перемножить два числа),
«/» (поделить первое число на второе нацело),
«%» (получить остаток от деления первого числа на второе),
«!» (посчитать факториал от первого числа, ввод второго числа не производится),
«x» (вывести первое число и закончить выполнение программы, ввод второго числа не производится).
Если пользователь попытается взять факториал от отрицательного числа или сделать ещё что-то незаконное, то никакой результат для этой команды выводить не следует.
Формат ввода
Несколько команд в указанном в условии формате: сначала вводится первое число, затем символ операции, затем при необходимости второе число.
Формат вывода
Несколько целых чисел — результаты выполнения команд.
напиши код на python
Информатика 10 класс Программирование Новый
Конечно, давайте разберем, как можно написать такой калькулятор на Python. Мы будем использовать цикл для обработки каждой команды, и при этом учитывать, что некоторые операции требуют два числа, а некоторые — только одно.
Вот шаги, которые мы должны выполнить:
Ввод данных: Будем считывать команды от пользователя до тех пор, пока не будет введена команда с символом x
, которая завершает выполнение программы.
Обработка команд: Для каждой команды мы будем:
Вывод результата: После выполнения каждой корректной команды, кроме команды завершения программы, мы будем выводить результат.
Обработка ошибок: Необходимо обрабатывать ситуации, когда ввод некорректен, например, деление на ноль или попытка вычислить факториал от отрицательного числа.
Теперь давайте посмотрим, как это может быть реализовано в коде:
def calculate():
import math
while True:
command = input("Введите команду: ").strip()
parts = command.split()
if len(parts) < 2:
continue
try:
num1 = int(parts[0])
operation = parts[1]
if operation == 'x':
print(num1)
break
if operation == '!':
if num1 < 0:
continue
print(math.factorial(num1))
continue
if len(parts) < 3:
continue
num2 = int(parts[2])
if operation == '+':
print(num1 + num2)
elif operation == '-':
print(num1 - num2)
elif operation == '*':
print(num1 * num2)
elif operation == '/':
if num2 == 0:
continue
print(num1 // num2)
elif operation == '%':
if num2 == 0:
continue
print(num1 % num2)
except ValueError:
continue
# Вызов функции для начала работы калькулятора
calculate()
Объяснение кода:
while True
для постоянного запроса ввода команд.split()
, чтобы отделить числа от операции.try
и except
для обработки ошибок преобразования строк в числа.x
, программа выводит первое число и завершает выполнение. Этот код позволяет обрабатывать различные команды и выводить соответствующие результаты, обеспечивая при этом обработку ошибок ввода.