Лишние отступы после цикла

We use cookies. Read the Privacy and Cookie Policy

Если вы случайно снабдите отступом код, который должен выполняться после завершения цикла, то этот код будет выполнен для каждого элемента. Иногда Python выводит сообщение об ошибке, но часто дело ограничивается простой логической ошибкой.

Например, что произойдет, если случайно снабдить отступом строку с выводом завершающего приветствия для группы фокусников?

magicians = ['alice', 'david', 'carolina']

for magician in magicians:

. .print(magician.title() + ", that was a great trick!")

. .print("I can't wait to see your next trick, " + magician.title() + ". ")

. .

(1) . .print("Thank you everyone, that was a great magic show!")

Так как строка (1) имеет отступ, сообщение будет продублировано для каждого фокусника в списке (2):

Alice, that was a great trick!

I can't wait to see your next trick, Alice.

(2)Thank you everyone, that was a great magic show!

David, that was a great trick!

I can't wait to see your next trick, David.

(2)Thank you everyone, that was a great magic show!

Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.

(2)Thank you everyone, that was a great magic show!

Это еще один пример логической ошибки, наподобие описанной в разделе «Пропущенные отступы в других строках» на с. 66. Python не знает, что вы пытаетесь сделать в своем коде, поэтому он просто выполняет весь код, не нарушающий правил синтаксиса. Если действие, которое должно выполняться один раз, выполняется многократно, проверьте, нет ли лишнего отступа в соответствующей строке кода.