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


Тренажер кода
Название задания: Трассировка и исправление кода: анализ цифрового следа

Условие задания:

Изучите код, сгенерированный ИИ-инструментом, ниже. Он должен анализировать «цифровой след» (список действий) и считать количество подозрительных действий.

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() для уникальности

 Исправленная функция приводит строки к нижнему регистру

Критерии оценки:

Корректное предсказание вывода исходного кода (трассировка)

Точная формулировка найденной ошибки

Корректность исправленного кода

Код программы:
# Определите, что выведет исходный код до исправления.

# Найдите причины, по которым исходная функция работает неправильно.

# Создайте функцию analyze_trace_fixed(actions).

# Задайте подозрительные ключевые слова.

# Создайте множество для хранения найденных ключевых слов.

# Переберите все действия из списка actions.

# Для каждого действия выполните проверку без учёта регистра.

# Проверьте, какие подозрительные ключевые слова встречаются в действии.

# Добавляйте найденные ключевые слова так,
# чтобы каждое учитывалось только один раз.

# Верните количество уникальных найденных ключевых слов.