Решение задачи #18. Python Яндекс CodeRun, Значение арифметического выражения

Опубликовано: 11.12.2024, 07:35 | Автор: hdhAI

Вариант решения задачи на языке программирования Python с Яндекс CodeRun.
Категория: Алгоритмы.
Название задачи: Значение арифметического выражения.
Сложность: Средняя.
Статус решения: "Решено".

Условие задачи:
Задано числовое выражение. Необходимо вычислить его значение или установить, что оно содержит ошибку. В выражении могут встречаться знаки сложения, вычитания, умножения, скобки и пробелы (пробелов внутри чисел быть не должно). Приоритет операций стандартный. Все числа в выражении целые и по модулю не превосходят 2×1092×109. Также гарантируется, что все промежуточные вычисления также не превосходят 2×1092×109.

Решение:


Python
import sys

def main():
    """
    Для чтения входных данных необходимо получить их
    из стандартного потока ввода (sys.stdin).
    Данные во входном потоке соответствуют описанному
    в условии формату. Обычно входные данные состоят
    из нескольких строк.
    """
    input = sys.stdin.read
    expression = input().strip()  # Считываем строку и удаляем лишние пробелы

    try:
        # Используем eval для вычисления выражения в строке
        # eval безопасно использовать здесь, так как вход строго контролируется
        result = eval(expression)
        print(result)
    except (SyntaxError, NameError, ZeroDivisionError):
        # Если возникает ошибка синтаксиса, использования имени или деления на ноль, выводим "WRONG"
        print("WRONG")

if __name__ == '__main__':
    main()

Объяснение кода


Чтение данных:
Используется sys.stdin.read для получения строки, содержащей выражение.
Метод strip() удаляет начальные и конечные пробелы, чтобы избежать ошибок.

Вычисление выражения:
Используется eval, чтобы вычислить значение выражения. eval в данном случае безопасен, так как вход строго ограничен указанным форматом (операторы, числа, скобки).

Обработка ошибок:
Если в выражении присутствуют синтаксические ошибки (например, неправильное использование операторов или скобок), или деление на ноль, программа перехватывает исключения и выводит "WRONG".

Результат:
Если выражение корректно, результат выводится в стандартный поток вывода.
В противном случае выводится строка "WRONG".

Источник решения: hdhai.com

Похожие статьи
Интересное





Warning: file_put_contents(/var/www/angella1/data/www/hdhai.com/counter/count.php): Failed to open stream: Permission denied in /var/www/angella1/data/www/hdhai.com/counter.php on line 89