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()