2016-10-28 13 views
0

正の整数nを入力として受け取り、その数値の桁の合計を返す関数を作成します。関数内の文字列をループできません

以下は私のコードです:

def digit_sum(n): 
    string = str(n) 
    for number in string: 
     num = int(number) 
     total = 0 
     total += num 
    return total 

が、エラーメッセージは次のとおりです。 あなたの関数はdigit_sum(434)に失敗しました。それは11を返す必要があるとき4を返します。

私の知る限り、forループは正常にループしません。 1回だけループして値を返します。

私の質問は以下のとおりです。私のコードで間違って

  1. は何?

  2. 数字を文字列に変換する必要がある理由は、整数が反復不可能なのですか?

誰でも私を助けることができます。 ありがとうございます!

+0

「total = 0」をあなたのループ。 – idjaw

答えて

2

問題は、ループ内の合計をゼロに設定していることです。つまり、この文字列の最後の桁にある最新の値o + numが採用されます。代わりに、これを試してください:

def digit_sum(n): 
    string = str(n) 
    total = 0 
    for number in string: 
     num = int(number) 
     total += num 
    return total 
0

問題は、ループの繰り返しごとにtotalの値を0に戻すことです。あなたは各反復でtotalリセットされ、この

def digit_sum(n): 
    string = str(n) 
    total = 0 
    for number in string: 
     num = int(number) 
     total += num 
    return total 
+1

ジンクス、あなたは私にビールを借りている! – sconfluentus

0

のように、ループの上に初期化を移動します。 forループの外側にtotal = 0を移動します。

関連する問題