我遇到一個奇怪的問題:創建數字根功能
數字根功能的東西看起來是這樣的:
digital_root(493193)
=> 4 + 9 + 3 + 1 + 9 + 3
=> 29 ...
=> 2 + 9
=> 11 ...
=> 1 + 1
=> 2
,我的答案是:
def digital_root(n):
k = 10
while k > 9:
k = reduce(lambda x,y: int(x)+int(y), list(str(n)))
return k
我令k到10,這樣它會直接進入循環。 但網上法官說它花費了太多時間。
,我嘗試另一種解決方案:
def digital_root(n):
while n > 9:
n = reduce(lambda x,y: int(x)+int(y), list(str(n)))
return n
那麼問題就迎刃而解了。我可以弄清楚這兩個代碼有什麼區別
順便說一句,我使用codewars在線評判。這裏
雖然可能仍然可能會更快。 http://stackoverflow.com/questions/14939953/sum-the-digits-of-a-number-python –
是的,轉換爲字符串可能不是所有來回轉換最好的事情,我可以有想到這一點...... –
謝謝大家,其實這是更快 ' 高清digital_root(N): 回報N%或9 n和9 ' 我看到codewars這個代碼,很聰明! – SoulerTsai