2011-10-24 4 views
1

リスト内の各数字の最後の数字を取り上げ、まとめてまとめたい。たとえば、以下の関数は "10"を返します。ここで数字を合計するPython関数

def getSumOfLastDigits(numList): 
    x = sum(int(num[-1:]) for num in numList) 
    print x 

getSumOfLastDigits([1, 23, 456]) 
>>>10 

は私が期待される "10"

def getSumOfLastDigits(numList): 
    x = sum(int(num[-1:]) for num in numList) 
    print x 
    getSumOfLastDigits([1, 23, 456]) 
+0

WHEあなたが立ち往生していますか? –

+1

私は実際の出力に間違ったものをコピーして貼り付けたと思います。 –

+0

実際には、私は期待される出力として10を入れません。上記のコードを実行すると、これは実際の出力ではありませんでした。 – shaytac

答えて

3

あまりにも多くの仕事の代わりに受け取るものです。

def getSumOfLastDigits(numList): 
    return sum(x % 10 for x in numList) 
+0

番号が負の場合はどうなりますか? – JBernardo

+0

@JBernardo:Dunno。あなたは尋問者に尋ねなければならないでしょう。 –

+0

彼は最後の桁を求めました。 '(-1)%10'は9であり、1ではない – JBernardo

2

x = sum(num%10 for num in numList)

+0

お返事ありがとうございます。 – shaytac

2

あなたは数へのインデックスすることはできません。数字は一連の数字ではありません(内部では、基数10で表されません)。数学的操作を使用して数値の最後の桁を得ることができます。剰余を10で割ったときに取ることができます。これは%演算子で行います。また

  • はそれを返し、あなたの関数の値を表示しません。呼び出しコードがその値をどうするかを決定させます。計算と出力は別々のタスクであり、別々に保つ必要があります。

  • データ型を変数名で示すことは避けてください。はい、Pythonでもそうです。実際には必要でない仮定を構築することは良い考えではありません。たとえば、ここでは任意のシーケンスを使用できます。複数の番号があることを示す最も簡単な方法は、複数のnumbersを使用することです。それはまたあなたが完全な言葉を使用することを意味し、人々は 'num'が短いことを考える必要はありません。

  • 式の結果を一時変数に代入する必要はありません。一時変数をただちに使用し、すぐに使用する場合は必要ありません。 xという名前は何も教えてくれないので、それを切り取ってください。

  • getは、ほとんどのPythonistasでは関数名のための醜い接頭辞とみなされます。関数が値を計算して返すことは、すでに明らかであるはずです。これらの関数には名詞型の名前を使用し、既存のデータを操作することを主目的とする関数には動詞型の名前を使用します。

    このよう

def sum_of_last_digits(numbers): 
    return sum(number % 10 for number in numbers) 
0
def getSumOfLastDigits(numList): 
    total=0 
    for item in numList: 
     newItem=str(item) 
     length=newItem[len(newItem)-1] 
     total+=int(length) 
    return total 
関連する問題