Обоснование предложений for-else

Блок else запускается в предложении if-else, если if условие не выполняется. Точно так же в предложении for-else блок else запускается, если определенное условие не выполняется. Это условие всегда True, если не происходит break.

Это условие for довольно неявно и, возможно, не слишком интуитивно понятно, но в некоторых случаях я нахожу его довольно интересным и полезным. Хотя я не часто им пользуюсь.

И логику for-else можно заменить флагом, который может быть более удобен для некоторых людей. Итак, следующий код:

for i in range(10):
    if i == 5:
        break
else:
    print('No break') 

можно перевести на:

f = True
for i in range(10):
    if i == 5:
        f = False
        break
if f:
    print('No break')

Последний может быть более читабельным, но я считаю, что первый более компактен и элегантен. Однако использование ключевого слова else является спорным, так как может привести к путанице. Я согласен с тобой.