#!/usr/bin/env python def num_to_string(number): #Name lists for converting integers to strings ones = ['','one','two','three','four','five','six','seven','eight','nine'] teens = ['ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen'] tens = ['twenty','thirty','forty','fifty','sixty','seventy', 'eighty','ninety'] # Handle the single zero case if number == 0: return "zero" # Handle numbers less than 10 if number < 10: return ones[number] # Handle numbers in the teens if number < 20: return teens[number-10] # Handle all other double digit numbers if number < 100: # Convert integer to string to easily separate digits tmp = str(number) # The tens digit has '-2' to acount for no 'Zeros' or 'Tens' Strings # Could remove this by adding two empty string to the front of the list return tens[int(tmp[0])-2] + " " + ones[int(tmp[1])] # Handles all multiples of 100 (100, 200, 300...) if number % 100 == 0: tmp = str(number) return ones[int(tmp[0])] + " hundred" # Handle all other triple digit numbers if number < 1000: tmp = str(number) # x00-x09 if tmp[1] == '0': return ones[int(tmp[0])] + " hundred " + ones[int(tmp[2])] # x10-x19 if tmp[1] == '1': return ones[int(tmp[0])] + " hundred " + teens[int(tmp[1:3])-10] # x20-x99 return ones[int(tmp[0])] + " hundred " + tens[int(tmp[1])-2] + " " + ones[int(tmp[2])] ######################## # MAIN ######################## total_sum = 0 #Running sum of all numbers i = 0 # loop from i=0 to i=999 while i < 1000: tmp_sum = 0 # Temp sum for individual numbers tmp = num_to_string(i) # Convert number to String tmp = tmp.split() # Split String into words #Loop over all words and add their length to tmp_sum for words in tmp: tmp_sum += len(words) # add tmp_sum to total sum total_sum += tmp_sum print str(i), ': ', num_to_string(i), "=>", str(tmp_sum), "sum =", str(total_sum) i += 1 # increase index