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): > sumOfDigits=0 > for i in range(0, len(numList)): > num=str(numList.pop()) > sumOfDigits+=int(num[-1:]) > 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. > > *Examples* > > >>> getSumOfLastDigit([12, 23, 34]) > 9 > >>> getSumOfLastDigit([2, 3, 4]) > 9 > >>> getSumOfLastDigit([1, 23, 456]) > 10
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) ... >>> gsold([12,23,34]) 9 >>> gsold([2,3,4]) 9 >>> gsold([1,23,456]) 10 Peter -- http://mail.python.org/mailman/listinfo/python-list