2016-10-11 10 views
3

わからないこれは尋ねるのに適切な場所です。しかし、私は完全に立ち往生していたようでした。それを解決するためのより良い方法を見つけることができませんでした。競争力のあるプログラミングPython:繰り返し桁数のエラーエラー

私は競争のプログラミングの初心者です。私は解決していたRepeated sum of digits problem質問はここにあります。

Given an integer N, recursively sum digits of N until we get a single digit.

例: -

ここ
Input: 
2 
123 
9999 

Output:- 
6 
9 

が私のコードです: - :

Wrong !! The first test case where your code failed: 

Input: 
42 

Its Correct output is: 
6 

And Your Output is: 
0 

しかしとき -

def sum(inp): 
    if type(inp) == int: 
     if len(str(inp)) <= 1: 
      return inp 
     else: 
      a = list(str(inp)) 
      while len(a) > 1: 
       b = 0  
       for i in a: 
        b+= int(i) 
       a = list(str(b)) 
    return b 

t = int(raw_input()) 
for i in range(0,t): 
    print sum(i) 

それを提出している間は、私の次のエラーを与えました私は自分のコードを個人的に42を使ってテストしました。私には正しい出力があります。6。ここで

は疑問のリンクです: - Repeated sum of digits Error

+3

あなたの関数は 'digSum()'という名前ではありませんか? BTW:組み込みのメソッドと同じ名前の関数を定義すると、混乱が生じることがあります。例えば、Pythonでは 'sum'という名前を付けないでください。 – GolfWolf

+0

これは、同じコードのエラーです。行17:TypeError: 'int'オブジェクトは反復可能ではありません。 –

+0

これはどのように可能ですか? –

答えて

2

あなたは適切にコードを実装していません。 i0からtに繰り返しています。なぜ??次のような方法が行く:

N = 12345

桁(1 + 2 + 3 + 4 + 5 = 15)の和を計算します。もしそうなら、それは10未満であれば、現在の合計は答え..ですもしない

チェックは...ここN = 15

を設定することで、同じ手順に従ってくださいコードは次のとおりです。

def sum(inp): 
    while inp > 9: 
     num = inp 
     s = 0 
     while num > 0: 
      s = s + num%10 
      num = num/10 
     inp = s 

    return inp 

t = int(raw_input()) 
for i in range(t): 
    n = int(raw_input()) 
    print sum(n) 

を編集してください:tをテストケースの数とみなしているため、tまで繰り返していると思います。したがって、forループ内では、それぞれのテストケースに対してNの別の入力を行う必要があります。

編集-2 [これは、あなたが質問に提供してきたinputoutputに基づいています]:私は、コードを少し変更しました。質問には、tという数字の繰り返しが見つかります。そのために、各テストケースに対応する数字nを入力し、その繰り返しの合計を見つけるループを追加しました。

+0

これは私の最初の質問です。だから私はテストケース 't'と' n'を理解するのが難しいです。それをさらに説明できるなら、本当に役に立ちます。ありがとう! –

+0

提供されたリンクの質問は、数字が入力として「N」を提供し、あなたは 'N'の数字の繰り返し合計を見つけなければならないと言います。あなたの解答によれば、あなたは入力を受け取り、 't'でそれを格納します[問題ありません]。次に、 '0'から' t'まで繰り返して、 '0'から' t'までのすべての数の繰り返しの和を求めます。私の解答では、「t」だけの繰り返しの和を見つける。あなたはそれを持っていますか?彼らが 't 'を出すのに疑問があり、' t'ごとに繰り返される和を見つけるために 'N'という数字を与えます。しかし、これはあなたの質問 –

+0

の場合には当てはまらない。しかしあなたの解決策私にこのエラーを与えます。 –

関連する問題