# nw.py # ------ # Implements a simple number-to-text command-line interface. # Ex: python nw.py 145 from argparse import ArgumentParser from numberwords import int_under_1000000_to_str def int_under_1000000_to_str(number): if number < 0 or number >= 1000000: return "Number out of range" units = ["", "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"] def number_to_words(n): if n < 10: return units[n] elif 10 <= n < 20: return teens[n - 10] elif n < 100: return tens[n // 10] + ('' if n % 10 == 0 else '-' + units[n % 10]) elif n < 1000: return units[n // 100] + ' hundred' + (' and ' + number_to_words(n % 100) if n % 100 != 0 else '') elif n < 1000000: return (number_to_words(n // 1000) + ' thousand' + ('' if n % 1000 == 0 else ' ' + number_to_words(n % 1000))) return number_to_words(number) parser = ArgumentParser("Print out a number as it is spoken in English.") parser.add_argument("number", type=int) args = parser.parse_args() text = int_under_1000000_to_str(args.number) print(text)