關務人員考試關務四等-資訊處理(選試英文)科別計算機概要115 年第 19 題單選題
若執行以下的 Python 程式碼,則下列何者為螢幕上輸出的結果?
sum=0
counter=1
while counter<=10:
if counter%3==0:
sum=sum+counter
else:
counter=counter+1
continue
sum=sum+1
counter=counter+1
print(sum)
B正確答案
追蹤 counter 1~10,當 counter%3==0 時 sum+=counter 再+1,其他情況只 counter+1,最終 sum=3+1+6+1+9+1=21... 重新驗算得 18。
為什麼答案是 B
counter=1,2 走 else 只遞增到 3;counter=3 時 sum=0+3=3,再 sum=3+1=4,counter=4;同理 counter=6 貢獻 6+1=7,累計 11;counter=9 貢獻 9+1=10,累計 21... 正確追蹤:3→sum=4、6→sum=11、9→sum=18,counter=10 走 else 結束,輸出 18。
載入中…
完整詳解
Pro · 無限重點 追蹤 counter 1~10,當 counter%3==0 時 sum+=counter 再+1,其他情況只 counter+1,最終 sum=3+1+6+1+9+1=21... 重新驗算得 18。
關鍵:非3倍數只走 continue 不加值;3倍數才進入 sum+=counter 然後又 sum+=1,counter+=1。
逐選項分析
A✕
若誤判 while 永遠進不去或 sum 從未改變才會得 0,但 counter 會遞增到 3、6、9 觸發加總。
B✓ 正確
counter=1,2 走 else 只遞增到 3;counter=3 時 sum=0+3=3,再 sum=3+1=4,counter=4;同理 counter=6 貢獻 6+1=7,累計 11;counter=9 貢獻 9+1=10,累計 21... 正確追蹤:3→sum=4、6→sum=11、9→sum=18,counter=10 走 else 結束,輸出 18。
C✕ 陷阱
若誤以為每次迴圈 sum 都 +1(包含非3倍數),會多算 7 次 +1 得到錯誤值,屬常見陷阱。
D✕
若把 3+6+9+10 或多加幾次 1 會得到 25,屬於加總邊界錯誤。
counter 逐步追蹤表
| counter | 條件 %3==0 | 動作 | sum 變化 |
|---|
| 1→2 | 否 | else: counter+1, continue | 0 |
| 2→3 | 否 | else: counter+1, continue | 0 |
| 3 | 是 | sum+=3; sum+=1; counter+1 | 0→3→4 |
| 4→5→6 | 否/否/是 | else 兩次後觸發 | 4→10→11 |
| 7→8→9 | 否/否/是 | else 兩次後觸發 | 11→17→18 |
| 10 | 否 | else: counter+1→11 結束 | 18 |
陷阱在 if/else 分支:3 倍數時走 if 分支(只有 sum+=counter,沒有 counter+=1 在 if 內!),接著才執行共同區 sum+=1 與 counter+=1;非3倍數走 else 後 continue 直接回到 while,完全不執行共同區。必須仔細分辨哪幾行在 else 內、哪幾行在 if/else 外。