0

私はpyschools.comでpythonチュートリアルを行っています。上記の質問に答えるために、私の方法は各整数を文字列に変換し、文字の順序を逆にしてから整数に戻し、10で割り、追加します残り。これはおそらくこれを達成するための非常に混乱した方法ですが、私が考えることができる唯一の方法です。

私のコードは次のとおりです。

def getSumOfFirstDigit(num): 
    answer=0
    for number in num:
        str(number)
        number[::-1]
        int(number)
        t = number%10
        answer=answer+t
    return answer`

example: で実行すると、次getSumOfFirstDigit([12, 23, 34, 45, 56])のエラーが返されます。

Traceback (most recent call last):
File "Code", line 5, in getSumOfFirstDigit
TypeError: 'int' object has no attribute '__getitem__'`

「str(number)」がエラーの内容を処理すると思いました。

4

8 に答える 8

3

sum、リストのスライス、およびジェネレータ式を使用します。

>>> sum(int(str(n)[0]) for n in [1, 23, 45, 234])
9
于 2013-09-11T15:12:08.017 に答える
2

別の方法を次に示します。数値が 10 未満になるまで繰り返し 10 で割ることにより、最初の桁を取得できます。

def first_digit(n):
    while n > 9:
        n /= 10
    return n

その後、sum()関数を呼び出してジョブを実行するだけです。

def sum_of_first_digits(seq):
    return sum(first_digit(n) for n in seq)

討論

  • 仮定: すべての数値はゼロまたは正であり、負または数値以外の入力はチェックされません
  • sum() 関数の使用が許可されていない場合は、ループを記述します
于 2013-09-11T15:08:38.313 に答える
1

そのエラーが発生する理由は、次のように書いているためです。

    str(number)

そして後で:

    int(number)

number に割り当てられていないため、まだ int です。

それらを次のものに置き換えます。

    number=str(number)
    number=int(number)

そしてあなたは大丈夫なはずです。

于 2013-09-11T15:16:45.053 に答える
1
def getSumOfFirstDigit(num):
    sum1 = 0
    for x in num:
        temp = str(x)
        sum1 += int(temp[0])
    return sum1
于 2015-10-24T14:06:49.380 に答える
1

もちろんそうしますが、何らかの方法でそれを使用する必要があります。

これを試して:

answer = answer + int(str(number)[0])

または、 answer = answer + something を実行する代わりに、次のことができます。

answer += int(str(number)[0])

于 2013-09-11T15:05:57.940 に答える
1

TypeError: 'int' object has no attribute ' getitem ' は、変数 "number" をリストのように扱っているためです。そうではない。整数である num 内の数値の一貫性です。したがって、「number[::-1]」はノーノーです。それを行う1つの方法は....

    def getSumOfFirstDigit(num): 
        answer=[]
        for number in num:
            number=str(number)
            number=number[0]
            answer.append(int(number))
        return sum(answer)
于 2016-01-02T20:09:03.300 に答える
0
def getSumOfFirstDigit(numList): 
    total=0
    for item in numList:
        newItem=str(item)
        length=newItem[len(newItem)-len(newItem)]
        total+=int(length)
    return total
于 2014-01-29T17:37:15.497 に答える