An easier way to do this? (spoiler if you're using pyschools for fun)
__peter__ at web.de
Tue Nov 9 20:13:47 CET 2010
Matty Sarro wrote:
> Hey everyone,
> I'm working on one of the puzzles on pyschools.com, and am trying to
> figure out if I can make my solution a bit more elegant.
> def getSumOfLastDigit(numList):
> for i in range(0, len(numList)):
> return sumOfDigits
> Below is the problem. Basically you take the last digit of each number in
> the list, and add them together.
> Write a function: getSumOfLastDigit(numList) that takes in a list of
> positive numbers and returns the sum of all the last digit in the list.
> >>> getSumOfLastDigit([12, 23, 34])
> >>> getSumOfLastDigit([2, 3, 4])
> >>> getSumOfLastDigit([1, 23, 456])
Loop over a list directly:
for n in numlist:
Use the modulo (%) operator to find the last digit:
last_digit = n % 10
There is a built-in sum() function:
sum([1,2,3]) # 6
There is an inlined form of the for-loop called "generator expression"
sum(i*i for i in [1,2,3]) # 14
Putting it all together:
>>> def gsold(numbers):
... return sum(i%10 for i in numbers)
More information about the Python-list