Python用于打印每个if语句的最后一个值

时间:2017-05-23 20:07:48

标签: python for-loop if-statement

我在python中进行for循环,但我不知道如何打印if语句的每个分支中累积的最后一个值...即(不适用于循环的每次迭代) :

a = 0
for i in range(0,10):
    if i<2:
        a+= i
    elif i>7:
        a+= i
print a

第一个分支将a增加到0和1,所以我想打印“1”。第二个分支也增加a两次,增加到9和18,所以我想打印“18”。

当前输出

18

预期输出

1
18

5 个答案:

答案 0 :(得分:0)

for i in range(0,10):
    if (i < 1) or (i > 8):
        print i

产地:

0
9

答案 1 :(得分:0)

正如@gilgameshbk所说,只是缩进print a语句。与其他语言(如c或Java)不同,Python对缩进很敏感。您的代码应如下所示 -

a=0
for i in range(0,10):
    if i<1 or i>8 :
        a+=i
        print a

问题是您的print声明超出了if块。请注意,您应该使用or来使代码更紧凑。

答案 2 :(得分:0)

现在您已经稍微澄清了您的意图,看起来您正在尝试为某些范围内的每个元素递增,然后打印该范围的最后一个元素。

对于您展示的简单示例,请执行

a = 0
for i in range(10):
    if i < 2:
        a += i
        if i == 1:
            print(a)
    elif i > 7:
        a += i
        if i == 9:
            print(a)

从更一般的意义上说,你可以使用这里有多个范围和range objects are indexable的事实。

在您的示例中,您有两个范围:

ranges = [range(2), range(7, 10)]

你可以循环它们,进行递增并打印每个范围的最后一个元素:

a = 0
for rng in ranges:
    for i in rng:
        a += i
        if i == rng[-1]:
            print(a)

事实上,你根本不需要内部循环,因为range个对象可以直接传递给sum

for rng in ranges:
    a += sum(rng)
    print(a)

答案 3 :(得分:0)

如果您只想打印总金额,建议您使用list这样的理解:

result = [sum(x for x in range(0,10) if x < 2), sum(y for y in range(0,10) if y >7 or y < 2)]
for i in result:
    print i

输出:

1
18

如果您想使用if-语句,可以使用boolean检查是否打印了低值:

a = 0
printed = False
for i in range(0,10):
    if i<2:
        a+= i
    elif i>7:
        if not printed:
            print a
            printed = True
        a+= i
print a

输出:

1
18

答案 4 :(得分:-1)

您可以使用两个打印语句,如下所示:

a = 0
for i in range(0,10):
  if i<1:
    a+= i
    print(a)
  elif i>8:
    a+= i
    print(a)