5 ÷ 101 ≈ 4.95%. Но ПП готов, поэтому ловите и изучайте.Давайте детально разберём код:
def func(num: str):0). Определяем функцию
func, которая принимает один аргумент num строкового типа. Нам нужно число, а не строка, чтобы корректно сравнить
num с MAX_INDEXif num.isdigit()1).
num.isdigit() проверяет, является ли строка num числом. Метод isdigit() возвращает True, если в строке есть только цифры. Т.е. там записано натуральное число или ноль.Познавательная минутка 🤓
Натуральные числа (от лат. naturalis «естественный») - числа, возникающие естественным образом при счёте (1, 2, 3, 4, 5, 6, 7 и так далее).
if num.isdigit() and ...2). Если в
num есть символы помимо цифр, isdigit возвращает False. В этом случае команда and не выполняет код справа. Нас автоматом перекидывает в блок else. Happy end... (index := int(num))3). Преобразуем строку
num в целое число и присваиваем его переменной index. Ошибку ValueError при преобразовании мы исключили левой проверкой. Конструкция в скобках называется оператором присваивания с объявлением переменной (walrus operator). Моржовый оператор или просто морж доступен с Python 3.8+
...(index := int(num)) < MAX_INDEX:4). Благодаря круглым скобкам вокруг моржового присваивания, код "волшебным" образом превращается в обычное сравнение:
index < MAX_INDEXсравниваем значение
index с некоторой константой MAX_INDEX.Общий смысл этого кода заключается в проверке строки
num на то, что она является натуральным числом или нулём и что это число меньше чем константа MAX_INDEX 😉