TQC+ 程式語言Python 308 迴圈位數加總
題目說明:
請使用迴圈敘述撰寫一程式,要求使用者輸入一個數字,此數字代表後面測試資料的數量。每一筆測試資料是一個正整數(由使用者輸入),將此正整數的每位數全部加總起來。
輸入與輸出會交雜如下,輸出的部份以粗體字表示 1
1
98765
Sum of all digits of 98765 is 35
98765
Sum of all digits of 98765 is 35
輸入與輸出會交雜如下,輸出的部份以粗體字表示 2
3
32412
Sum of all digits of 32412 is 12
0
Sum of all digits of 0 is 0
769
Sum of all digits of 769 is 22
32412
Sum of all digits of 32412 is 12
0
Sum of all digits of 0 is 0
769
Sum of all digits of 769 is 22
程式碼:
n = eval(input())
for i in range(n):
temp = num = eval(input())
ans = 0
while temp != 0:
ans += temp % 10
temp //= 10
print('Sum of all digits of %d is %d' %(num, ans))
9 則留言
自動引用通知:
12.3
少了一個 i=i+1 在for迴圈裏面
JamesBang
你好!不用特別寫 i = i + 1 也可以執行。
當我們迴圈使用 range() 函數時,如果只帶入一個參數,假設是 range(3),迴圈就會跑 3 次,而 i 的值依序是 0、1、2,即便多寫 i = i + 1 也一樣是跑三次;而如果帶入兩個參數,第一個參數是起始值,第二個參數減一是終止值,像 range(-1, 2) 就是 -1、0、1,這樣也是執行三次。
文興
請問
while temp != 0:
ans += temp % 10
temp //= 10
這段的意思是什麼?
JamesBang
你好!這一段是要算各位數字的加總,例如我們輸入 123,這裡就會算出 1 + 2 + 3 的結果。
以 123 為例:
一開始變數 temp 為 123,在第一行因為條件設為不等於 0,所以會執行 while 迴圈下面的敘述。
「ans += temp % 10」為「ans = ans + temp % 10」的縮寫
第一次執行時 ans 為 0、temp % 10 為 123 % 10 = 3 (求餘數)
所以 ans = 0 + 3 = 3,第一次執行後 ans 會變成 3。
接著將 temp 整除 10 會變成 12,然後因為 temp 還是不等於 0,所以再進行下一次的迴圈內容。
執行第二次:
ans = ans + temp % 10 = 3 + 2 = 5
temp = temp // 10 = 12 // 10 = 1
temp = 1 不等於 0,所以再執行一次
執行第三次:
ans = ans + temp % 10 = 5 + 1 = 6
temp = temp // 10 = 0
temp 為 0,跳出迴圈,將 ans 結果輸出。
文興
很清楚,感謝!
考到證照後可找什麼工作?
JamesBang
Python 相關的工作有很多,各種領域都用得到 Python,因為它有非常多的套件可以做應用,比較常見的就是大數據分析、影像辨識、人工智慧、自動化測試… 等等,以上都需要使用到套件,所以只有考到證照是不夠的,建議可以買幾本書來加深實力,文淵閣的 Python 系列應用廣泛,非常推薦!
或是投身資訊教育,現在有一些學校在招募資訊老師,不用教師證只要有資訊背景的學士即可、還有類似補習班的程式老師,因為是教小孩子,所以也不太需要高強的技能。
oo
請問題目說輸出時需要粗體,在程式碼上哪裡有寫出來
JamesBang
題目的意思是,範例中粗體的部分就是我們要輸出的內容,也就是我程式碼最下面的 print。