2013-05-03 23 views
-2

我對這最後一個問題有麻煩。它來自「如何像計算機科學家一樣思考」一書。你們能幫我解決嗎?Python的平方和功能

寫一個函數sum_of_squares_of_digits,計算傳遞給它的整數數字的平方和。例如,sum_of_squares_of_digits(987)應返回194,由於9 * 2 + 8 * 2 + 7 ** 2 == 81 + 64 + 49 194 ==

+0

歡迎堆棧溢出!看起來你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論是適用)。您提供的細節越多,您可能會收到的答案就越多。 – 2013-05-03 21:31:40

回答

5

轉換整數到字符串,則各個字符回整數:

def sum_of_squares_of_digits(value): 
    return sum(int(c) ** 2 for c in str(value)) 

此一起使用sum()與發電機表達式把所有的數字回整數,方它們,並且求和結果再度攜手。

演示:

>>> def sum_of_squares_of_digits(value): 
...  return sum(int(c) ** 2 for c in str(value)) 
... 
>>> sum_of_squares_of_digits(987) 
194 
+0

你告訴他自己嘗試一下,然後你給了他一個超級簡潔的好回答...恥辱,哈哈 – 2013-05-03 21:36:59

+0

@GradyPlayer:我給出了簡潔的pythonic答案。不幸的是,OP將不會從中學到任何東西,因爲他們自己沒有嘗試過任何東西。 – 2013-05-03 21:37:45

+0

謝謝。我用這個作爲參考來得到我的答案。儘管實際上它確實更有意義。感謝所有回答者。 – 2013-05-03 21:49:04

2

可以遍歷的數字通過將其轉換成一個串號:

>>> n = 102 
>>> for digit in str(n): 
...  print(digit) 
... 
1 
0 
2 

digit仍將是一個字符串,所以你可以使用int(digit)把它變成一個整數。