2017-05-23 83 views
2

我正在python中做一個for循環,但我不知道如何打印在if語句的每個分支中累積的最後一個值...... ie(不適用於每個循環迭代):Python打印每個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

您確定要編輯OP嗎?你的問題現在毫無意義。 –

+0

請重新閱讀您的整個問題並加以解決。 –

+0

您仍然有這個問題:「但我希望它先打印0和9」 –

回答

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

產地:

0 
9 
-1

你可以使用兩個打印語句,就像這樣:

a = 0 
for i in range(0,10): 
    if i<1: 
    a+= i 
    print(a) 
    elif i>8: 
    a+= i 
    print(a) 
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聲明出去,你應該使用or使代碼更緊湊的if blocks.Note的。

+1

你真的不需要'if'條件下的那些parens。 –

+0

@MadPhysicist是的。那是一個錯誤。我從c開始了我的電腦學習。所以我傾向於用C來思考。非常感謝 – 97amarnathk

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) 
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 
+0

這個問題已經得到明顯的闡明。這不是OP正在尋找的東西。 –

+0

@MadPhysicist這是因爲這個問題被編輯了3次以上3次不同的預期結果 –

+0

您最初顯示的結果對於它們中的任何一個都不是有效的選項。感謝您的修復。 –