Почему break предшествует "основному" циклу (python)

не могли бы вы помочь понять логику в Python.

Есть пример:

answers = ["A", "C", "W", "E"]
for x in answers:
    if x == "W":
        print("Wrong")
        break
    print(x)  

Здесь цикл проходится по всему списку, и если натыкается на ответ "W", то останавливается. На выходе получаем:

A
C
Wrong

Но я не понимаю, почему сначала идет условие if, а только потом - цикл "проходки" по значениям. Руководствуясь бытовой логикой ведь сначала цикл проходится по значениям, а уже потом должна следовать операция проверки на соответствие значению "W" ? Но если я меняю местами эти две части кода:

answers = ["A", "C", "W", "E"]
for x in answers:
    print(x)
    if x == "W":
        print("Wrong")
        break

То на выходе имеею:

A
C
W
Wrong

Не могли бы вы мне помочь разобраться в этой логике?


Ответы (2 шт):

Автор решения: Эникейщик

Сначала идет условие if (если W, то завершаем цикл), а потом вывод на печать. А цикл находится вокруг всего этого. Каждое значение проверяется отдельно.

Вы же сначала ставите вывод на печать, а потом проверку на значение.

→ Ссылка
Автор решения: Антон

Разберем цикл forв первом примере на шаги:

  1. под проверку попадает "A". Это не "W". Он проходит if. Потом он печатает "A"

  2. то же самое и с "C".

  3. Наступает черед "W". Он проходит if. Условие верное - это "W". А в цикле написано: break. break мгновенно завершает while, не проходя последующие действия. А печатать "W" - в последующих действиях.

А вот во втором примере на так. Там печать - не последующее действие. Печать идет перед break. И он сначала печатает "W", а потом уже выходит с помощью break.

→ Ссылка