В отношении:
if smallest is None:
smallest = num
Вы правильно установили smallest
на первое значение, но не делаете то же самое для largest
.
Это означает, что для первого значения выражение num > largest
будет эквивалентно FloatVariable > NoneVariable
, что является причиной ошибки, которую вы видите.
Лучший подход будет выглядеть примерно так:
if smallest is None:
smallest = num
largest = num
elif num > largest:
largest = num
elif num < smallest:
smallest = num
Преимущество использования знания о том, что smallest
и largest
либо оба будут None
в начале, либо оба non- None
после первого значения (первое значение по сути будет одновременно текущим минимумом и максимумом).
Он также не выполняет второй блок if
для первого значения - этотеперь нет необходимости, когда вы устанавливаете smallest
и largest
для этого значения.