为什么while循环中的缩进会产生问题?

时间:2019-04-09 05:29:31

标签: python python-3.x while-loop indentation

我想在Python中使用while循环创建1到14的列表(不包含5和10),同时出现缩进问题。为什么缩进会产生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 个答案:

答案 0 :(得分:1)

Python中的缩进不仅是为了可读性,而且还会创建一个新的代码块,有关更多信息,请查看Here。 在第一个发布的代码行中:

total += number
number += 1

不在while块中。因此它不会在循环的每次迭代中执行,但会在循环结束后执行。

答案 1 :(得分:1)

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会将它们视为不同的块。

答案 2 :(得分:0)

以这种方式进行操作可能会让您更容易理解

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