我希望函数取出列表中每个数字的最后一位数,并将它们总结在一起。因此,例如,下面的函数将返回“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])
答案 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
没有告诉我们任何内容,因此请将其删除。
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