Краткий ответ
| Файл | Должен ли проходить проверку? | Результат программы |
|---|---|---|
hack.exe |
Нет | True — ошибочно |
photo.jpg |
Да | True |
Ошибка есть: строка 3. В поле для номера строки нужно указать 3.
Почему
В Python запись
if ext == "jpg" or "png" or "gif":
работает не так, как задумано. Python понимает её как:
if (ext == "jpg") or ("png") or ("gif"):
Строки "png" и "gif" непустые, а значит всегда считаются истинными. Поэтому всё условие всегда даёт True, и функция разрешает даже hack.exe.
Как исправить
Нужно повторять сравнение:
if ext == "jpg" or ext == "png" or ext == "gif":
или использовать in:
if ext in ("jpg", "png", "gif"):
Проверка после исправления
hack.exe: расширениеexe→False, файл отклоняется.photo.jpg: расширениеjpg→True, файл разрешается.