iT邦幫忙

2

Python迴圈問題

  • 分享至 

  • xImage

dear 各位先進

我是程式小白,最近剛開始學python
sumA=0
sumB=0
for i in range(1,10):
if i%2==1:
sumA=sumA+i
else:
sumB=sumB+i
print(sumA)

我想說為何最後他print出來的結果是
1
4
9
16

照理來說應該還有一個9,也就是說最後應該是25阿....

可否請大家指導我一下 謝謝

python 程式是使用縮進, 你先把怎樣貼程式碼部分貼好,有標籤可以使用的.左邊數來第五個, </> 這樣的圖案.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
Zero皇
iT邦研究生 2 級 ‧ 2022-04-10 12:01:35

Python的for in range(),括號內前兩個值分別是起始值和終止值,然後最後圈只會執行到終止值-1,所以妳要看到25,就要讓迴圈執行到i=10,也就是for i in range(1,11):,才會看到上一輪加好的25(sumA)被印出來

0
小魚
iT邦大師 1 級 ‧ 2022-04-10 16:05:03

因為你的print寫在else那邊,
但是9不會執行到else,
所以沒有執行到print.

因為

for i in range(1,10):

只會執行到9,
另外最好用兩個程式碼標籤(```)把程式碼包起來,
python最重要的是縮排...

1
1
Rafael
iT邦新手 2 級 ‧ 2022-04-10 20:17:15
#寫法1 當i=奇數,if條件成立時,才print(sumA)
sumA=0
sumB=0
for i in range(1,10):
  if i%2==1:
    sumA+=i
    print(sumA) 
  else:
    sumB+=i
#寫法2 每次運行不列印,print(sumA)的結果在迴圈跑完後,只列印一次
sumA=0
sumB=0
for i in range(1,10):
  if i%2==1:
    sumA+=i
  else:
    sumB+=i
print(sumA) 

不確定您是要每次迴圈i跑過都要列印sumA,還是要單純找奇數相加
python像上面大大說的縮排不同會影響結果。

或換個思路~原本每個迴圈跑完印一次是下面這樣
1
1
4
4
9
9
16
16
25

#你的應該是長這樣
else:
  sumB=sumB+i
  print(sumA)

所以最後一個迴圈i=9時,因為符合if條件,自然跑不到else裡print(sumA),等於說你上面印的sumA結果,都是i=偶數的結果的意思(sumA沒加到東西),希望這樣解釋比較清楚。
照你想要的邏輯,應該是把print(sumA)移到if條件裡囉~

我要發表回答

立即登入回答