4 回答
TA貢獻2019條經驗 獲得超9個贊
一個簡單的print跟蹤你的值就會顯示問題:
number = number/10
您需要整數除法:
number = number//10
您的代碼計算無限總和,然后必須除以 10,直到內部表示的剩余數字減少到 0。
一種更簡單的方法是獲取原始字符串輸入并將字符串的每個字符轉換為一位整數。添加這些整數。
TA貢獻1804條經驗 獲得超2個贊
您還可以這樣做:
number = int(input("Enter the Number: "))
sum_of_digits = 0
while number > 0:
digit = number % 10
sum_of_digits = sum_of_digits + digit
number = number // 10
TA貢獻1836條經驗 獲得超5個贊
下面是一個使用原始問題中提供的示例作為起點的解決方案。
def find_sum_of_digits(number):
? ? result = 0 # Variable to store result
? ? while number > 0:
? ? ? ? digit = number % 10 # Current digit is remainder from number / 10
? ? ? ? result += digit # Add digit to result and assign value to result variable
? ? ? ? number //= 10 # Number is number // 10 to shift left to next digit, disregarding fractional part of quotient
? ? return result
請注意,除以 10 向左移到下一位時,使用了下限除法運算符(?//) 而不是標準除法運算符 (?/) 。number正是這種更改將阻止您獲得錯誤的return值(例如16代替15when?number = 555)。
Python 向下除法返回int表示兩個數字的截斷除法;而不是 a?float(如 Python 中的標準除法那樣),這對于您的目的來說是必需的,因為您只關心 的數字int,而不關心標準除法可能產生的任何小數部分 - 這些在number您轉換回之前會被求和int原始示例。
這是另一個有效的解決方案,可以產生所需的輸出。這次我們返回sum函數的結果,該結果給出了int表示 的每個數字的實例的列表理解number。
def?find_sum_of_digits(number): ???return?sum([int(d)?for?d?in?str(number)])
在這種情況下,通過首先轉換為 a?,然后迭代每個,將每個int數字轉換回 ,找到表示 的每個數字。numbernumberstrcharnumber?strint
TA貢獻1784條經驗 獲得超8個贊
另一種解決方案是:
def find_sum_of_digits(number): return sum([int(n) for n in str(number)])
添加回答
舉報
