2017-08-07 85 views
1

這是返回給定號碼的數字之和的函數。 例如:345給出12(3 + 4 + 5)sum_of_digits中的數字之前的'0'給出錯誤的答案

def digit_sum(n): 
    s=0 
    while(n>0): 
    r=n%10 
    n=n/10 
    s=s+r 
    return s 
print digit_sum(0123) 

輸出:替代6-

+2

前綴'0'意味着您解讀數目爲八進制數。由於它很混亂,這個特性已經在Python-3.x –

+2

中被刪除了惡意下載的文檔和預期輸出的寫得很好的問題。當你第一次遇到這個時,這真是令人困惑。 – Bathsheba

回答

2

此前Python 3中,0123八進制字面因爲它與領先開始0

(其十進制值是83,並且這些數字總和爲11)

+0

怪罪於20世紀70年代的C怪人。 **爲什麼python繼續這個?**。至少,他們應該已經去了Octo的'0o'。 – Bathsheba

+0

這已經在python3中修復了。八進制需要寫成'0o123'。 '0123'是一個'SyntaxError'。 –

+0

太棒了。他們採用我最喜歡的符號! Python很棒! – Bathsheba