Вопрос задан 06.03.2025 в 14:21. Предмет Информатика. Спрашивает Бостанжиева Руфина.

Можно ли вывести результат арифметического выражения, введённого с клавиатуры?

Перейти к ответам

Ответы на вопрос

Отвечает Колган Михаил.

Решить эту задачу можно разными способами, но самый простой и удобный – использовать встроенные возможности Python. Ниже я подробно разберу подход к решению.

1. Читаем ввод пользователя

Поскольку пользователь вводит выражение в виде строки, мы сначала получаем его с клавиатуры:

python
expr = input("Введите арифметическое выражение (например, 23+12): ")

2. Разбираем выражение

Нам нужно определить, какие числа и какую операцию ввёл пользователь. Так как выражение всегда состоит из трех частей (число, оператор, число), можно пойти разными путями:

  • Найти положение оператора (+, -, *, /)
  • Разбить строку на две части (левое и правое число)

Один из удобных способов – использовать регулярные выражения. Но для простоты можно просто проверять наличие символа в строке:

python
if '+' in expr: a, b = expr.split('+') operator = '+' elif '-' in expr: a, b = expr.split('-') operator = '-' elif '*' in expr: a, b = expr.split('*') operator = '*' elif '/' in expr: a, b = expr.split('/') operator = '/' else: print("Ошибка: некорректное выражение") exit()

3. Преобразуем числа

Теперь у нас есть a и b – это части выражения, но они пока в строковом формате. Нужно привести их к числовому:

python
a = float(a.strip()) b = float(b.strip())

4. Выполняем операцию

В зависимости от оператора выполняем соответствующую операцию:

python
if operator == '+': result = a + b elif operator == '-': result = a - b elif operator == '*': result = a * b elif operator == '/': if b == 0: print("Ошибка: деление на ноль") exit() result = a / b

5. Выводим результат

Осталось только вывести результат:

python
print("Результат:", result)

Готовый код

Вот весь код программы целиком:

python
expr = input("Введите арифметическое выражение (например, 23+12): ")

if '+' in expr: a, b = expr.split('+') operator = '+' elif '-' in expr: a, b = expr.split('-') operator = '-' elif '*' in expr: a, b = expr.split('*') operator = '*' elif '/' in expr: a, b = expr.split('/') operator = '/' else: print("Ошибка: некорректное выражение") exit()

a = float(a.strip()) b = float(b.strip())

if operator == '+': result = a + b elif operator == '-': result = a - b elif operator == '*': result = a * b elif operator == '/': if b == 0: print("Ошибка: деление на ноль") exit() result = a / b

print("Результат:", result)


Дополнительные улучшения

Если хочется сделать программу ещё удобнее:

  1. Обработать ошибки ввода – например, если пользователь введёт "23++12" или "abc+12", программа должна выводить сообщение об ошибке.
  2. Добавить поддержку целых и дробных чисел – код уже умеет работать с float, но можно добавить проверку, чтобы выводить целое число, если дробная часть равна 0.
  3. Игнорировать пробелы – если пользователь введёт " 23 + 12 ", всё должно работать.

Вот улучшенный вариант:

python
expr = input("Введите арифметическое выражение (например, 23 + 12): ").replace(" ", "")

try: if '+' in expr: a, b = expr.split('+') operator = '+' elif '-' in expr: a, b = expr.split('-') operator = '-' elif '*' in expr: a, b = expr.split('*') operator = '*' elif '/' in expr: a, b = expr.split('/') operator = '/' else: raise ValueError("Некорректное выражение")

a = float(a) b = float(b)

if operator == '+': result = a + b elif operator == '-': result = a - b elif operator == '*': result = a * b elif operator == '/': if b == 0: raise ZeroDivisionError("Ошибка: деление на ноль") result = a / b

print("Результат:", int(result) if result.is_integer() else result)

except ValueError: print("Ошибка: введите корректное выражение!") except ZeroDivisionError as e: print(e)

Теперь программа: ✔ Игнорирует пробелы
✔ Проверяет корректность данных
✔ Выводит целые числа без .0 (например, 5 вместо 5.0)

Попробуйте запустить этот код, и он будет работать для большинства случаев! ????

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос