我在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
答案 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)