Python函数用于求和数字

时间:2011-10-24 03:32:49

标签: python

我希望函数取出列表中每个数字的最后一位数,并将它们总结在一起。因此,例如,下面的函数将返回“10”。

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]) 

4 个答案:

答案 0 :(得分:3)

工作太多了。

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

您无法索引数字;数字不是数字序列(在内部,它不在基数10中表示)。您可以使用数学操作来获取数字的最后一位数:取除除以10时的余数。我们使用%运算符执行此操作。

此外:

  • 请勿在函数中打印该值,并将其返回。让调用代码决定如何处理该值。计算和输出是单独的任务,应该分开。

  • 避免在变量名中指示数据类型 - 是的,即使在Python中也是如此。建立实际上不必要的假设并不是一个好主意。例如,您可以在此处使用任何类型的序列。表示您有多个号码的最简单方法是使用复数numbers。这也意味着你使用了一个完整的单词,人们不必考虑'num'的缩写。

  • 如果您只想使用一次,那么就不需要将表达式的结果分配给临时变量。名称x没有告诉我们任何内容,因此请将其删除。

  • 大多数Pythonistas都认为
  • get是函数名称的丑陋前缀。显而易见,该函数计算并返回一个值。对这些函数使用名词类型名称,对主要用于处理某些现有数据的函数使用动词类型名称。

因此:

def sum_of_last_digits(numbers):
    return sum(number % 10 for number in numbers)

答案 3 :(得分:0)

def getSumOfLastDigits(numList): 
    total=0
    for item in numList:
        newItem=str(item)
        length=newItem[len(newItem)-1]
        total+=int(length)
    return total