Тренажер кода
Название задания: Трассировка и исправление кода: анализ цифрового следа
Условие задания:
Изучите код, сгенерированный ИИ-инструментом, ниже. Он должен анализировать «цифровой след» (список действий) и считать количество подозрительных действий.
def analyze_trace(actions):
suspicious = ['admin', 'root', 'sudo', 'password']
flags = []
for act in actions:
for word in suspicious:
if word in act:
flags.append(word)
return len(flags)
trace = [
'user login',
'admin access',
'admin settings',
'root shell',
'sudo command',
'ADMIN panel'
]
result = analyze_trace(trace)
print(result)
Вопрос 1 (понимание): что выведет print(result) при запуске?
Вопрос 2 (алгоритмика): в коде есть логическая ошибка. Найдите и исправьте её.
Требование к исправлению:
функция должна считать количество уникальных ключевых слов из suspicious, найденных во всём списке действий;
каждое ключевое слово учитывается только один раз;
для хранения найденных ключевых слов используйте множество set;
исправленный вариант кода оформите в функции analyze_trace_fixed(actions);
функция должна корректно считать УНИКАЛЬНЫЕ подозрительные действия;
должна игнорировать регистр (ADMIN и admin — одно и то же).
Пример вывода:
Текущий вывод: 3.
Проверяется:
Правильно определён текущий (ошибочный) вывод программы — 4
Найдена причина ошибки: отсутствие .lower() и дублирование через append()
Исправленная функция использует set() для уникальности
Исправленная функция приводит строки к нижнему регистру
Критерии оценки:
Корректное предсказание вывода исходного кода (трассировка)
Точная формулировка найденной ошибки
Корректность исправленного кода