Загрузка данных


class LowPressureError(Exception):
    # Теперь ошибка принимает сам узел (node) и сохраняет его
    def __init__(self, node):
        self.node = node

class OilNode:
    def __init__(self, name, required_pressure):
        self.name = name
        self.required_pressure = required_pressure
        self.next = None

def create_oil_system():
    node1 = OilNode("Маслоприёмник", 0.3)
    node2 = OilNode("Маслонасос", 0.8)
    node3 = OilNode("Масляный фильтр", 0.6)
    node4 = OilNode("Главная магистраль", 1.0)
    node5 = OilNode("Шатунный вкладыш", 1.4)

    node1.next = node2
    node2.next = node3
    node3.next = node4
    node4.next = node5

    return node1

def check_pressure(head, current_pressure):
    node = head  # Используем имя node, как в задании
    while node is not None:
        if current_pressure < node.required_pressure:
            # Выбрасываем ошибку, передавая в неё сам узел
            raise LowPressureError(node)
        else:
            print(f"[OK] {node.name}: давление {current_pressure} бар")
        
        node = node.next

def main():
    try:
        pressure_input = input("Введите текущее давление масла (в барах): ")
        current_pressure = float(pressure_input.replace(',', '.'))
    except ValueError:
        print("Ошибка ввода. Пожалуйста, введите число.")
        return

    head = create_oil_system()

    try:
        check_pressure(head, current_pressure)
    except LowPressureError as e:
        # Достаем узел из перехваченной ошибки
        node = e.node
        # Теперь выводим строку ровно так, как просили
        print(f"Отказ на {node.name}! Вкладыш разрушен.")

if __name__ == "__main__":
    main()