import random
def run_lift_simulation():
# Неисправности
failures = {
"Разбитое зеркало": False,
"Занято (перегруз)": False,
"Зажат предмет в дверях": False,
"Нет электричества": False,
"Нажата кнопка 'Стоп' внутри": False
}
# Внешние факторы
external_factors = {
"Кто-то курит в кабине": False,
"Разлита жидкость на полу": False,
"В лифте громкая музыка": False,
"Пассажир потерял сознание": False
}
# С вероятностью 10% активируем неисправности
for key in failures:
if random.random() < 0.1:
failures[key] = True
for key in external_factors:
if random.random() < 0.1:
external_factors[key] = True
# Вывод таблицы
print("\n" + "=" * 90)
print("СИМУЛЯТОР ЛИФТА (вероятность поломки 10%)")
print("=" * 90)
print(f"{'Тип':<25} {'Описание':<35} {'Активна':<10} {'Влияние на движение':<30}")
print("-" * 90)
for failure, status in failures.items():
status_text = "ДА" if status else "НЕТ"
if failure in ["Нет электричества", "Зажат предмет в дверях", "Нажата кнопка 'Стоп' внутри"]:
influence = "Блокирует"
else:
influence = "Не блокирует"
print(f"{'Техническая':<25} {failure:<35} {status_text:<10} {influence:<30}")
for factor, status in external_factors.items():
status_text = "ДА" if status else "НЕТ"
print(f"{'Внешний фактор':<25} {factor:<35} {status_text:<10} {'Не блокирует':<30}")
print("-" * 90)
# Проверка критических ошибок
critical = ["Нет электричества", "Зажат предмет в дверях", "Нажата кнопка 'Стоп' внутри"]
can_move = True
reason = ""
for crit in critical:
if failures[crit]:
can_move = False
reason = f"КРИТИЧЕСКАЯ ОШИБКА: {crit}"
break
if can_move:
reason = "Лифт исправен, движение разрешено"
# Результат
if can_move:
print("\nРЕЗУЛЬТАТ: Лифт поедет")
print(f"Причина: {reason}")
active_external = [f for f, s in external_factors.items() if s]
if active_external:
print("Внешние факторы:")
for factor in active_external:
print(f" - {factor}")
else:
print("\nРЕЗУЛЬТАТ: Лифт НЕ поедет")
print(f"Причина: {reason}")
print("=" * 90)
return can_move
# Запуск 3 симуляций
if __name__ == "__main__":
for i in range(3):
print(f"\n\nСИМУЛЯЦИЯ {i+1}")
run_lift_simulation()
if i < 2:
input("\nНажмите Enter для продолжения...")