Почему отступ в цикле while создает проблему? - PullRequest
2 голосов
/ 09 апреля 2019

Я хочу создать список с 1 по 14 без 5 и 10 с циклом while в Python, в то время как появилась проблема с отступом.Почему отступ создает проблему цикла while?

ниже был мой код до и после

Код до:

total = 0
number = 1
while number <= 15:
    if number%5 == 0:
        number += 1
        continue
    print("%3d"%(number), end = "")
total += number
number += 1
print("\ntotal = %d"%(total))

код после

total = 0
number = 1
while number <= 15:
    if number%5 == 0:
        number += 1
        continue
    print("%3d"%(number), end = "")
    total += number
    number += 1
print("\ntotal = %d"%(total))

Я ожидаю, что результат будет 1 2 3 4 6 7 8 9 11 12 13 14 всего = 90

Ответы [ 3 ]

1 голос
/ 09 апреля 2019

Отступы в Python предназначены не только для удобочитаемости, но и для создания нового блока кода, смотрите Здесь для получения дополнительной информации.в первом размещенном коде строки:

total += number
number += 1

находятся вне блока while.поэтому он не будет выполняться в каждой итерации цикла, но будет выполняться после завершения цикла.

1 голос
/ 09 апреля 2019

Python зависит от отступа, чтобы знать, какой блок операторов должен выполняться в цикле.

Другими словами, Тот же отступ = Тот же блок

Я бы сказалдобавляйте комментарии к блокам, пока вы не освоитесь с ними!

while number <= 15:
    # LOOP BLOCK STARTS HERE

    if number%5 == 0:
        # IF BLOCK STARTS HERE

        number += 1
        continue

        # IF BLOCK ENDS HERE

    print("%3d"%(number), end = "")
    total += number
    number += 1

    # LOOP BLOCK ENDS HERE

print("\ntotal = %d"%(total))

Если вы не сделаете отступы для одного и того же блока, Python будет рассматривать их как разные блоки.

0 голосов
/ 09 апреля 2019

Вам будет легче понять, как это сделать

total = 0
number = 0
while number <= 15:
    #If number is not divisible by 5, add it to total
    if number%5 != 0:
        total+=number
    #Always increment the number
    number += 1
    print("%3d"%(number), end = "")
print("\ntotal = %d"%(total))
#  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
#total = 90
...