On 11/9/2010 2:00 PM, Matty Sarro wrote:
I'm working on one of the puzzles on pyschools.com <http://pyschools.com>, and am trying to figure out if I can make my solution a bit more elegant.
Definitely
def getSumOfLastDigit(numList): sumOfDigits=0 for i in range(0, len(numList)): num=str(numList.pop())
This is an awkward way to iterate through a list ;-)
sumOfDigits+=int(num[-1:]) return sumOfDigits
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
# Straightforward version of what you did def getSumOfLastDigit(numList): sumOfDigits=0 for i in numList: sumOfDigits+=int(str(i)[-1:]) return sumOfDigits print(getSumOfLastDigit([12, 23, 34]), getSumOfLastDigit([2, 3, 4]), getSumOfLastDigit([1, 23, 456]) ) # 9 9 10 # Use generator expression with built-in sum function def getSumOfLastDigit(numList): return sum(int(str(i)[-1:]) for i in numList) print(getSumOfLastDigit([12, 23, 34]), getSumOfLastDigit([2, 3, 4]), getSumOfLastDigit([1, 23, 456]) ) # 9 9 10 -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list