diff --git a/numberwords.py b/numberwords.py index 8c590cd..1c26418 100644 --- a/numberwords.py +++ b/numberwords.py @@ -15,19 +15,47 @@ TENS_NAMES = [ ] def int_under_1000000_to_str(number): - return "umm..." + if 1000 <= number < 1000000: + thousands = number // 1000 + remainder = number % 1000 + if remainder >0: + return int_under_1000_to_str(thousands) + " " + "thousand" + " " + int_under_1000_to_str(remainder) + else: + return int_under_1000_to_str(thousands)+ " " + "thousand" + elif 0 <= number < 1000: + return int_under_1000_to_str(number) def int_under_1000_to_str(number): - return "umm..." + if 100 <= number < 1000: + hundreds = number //100 + remainder = number % 100 + if remainder > 0: + return DIGIT_NAMES[hundreds]+ " " + "hundred and" + " " + int_under_100_to_str(remainder) + else: + return DIGIT_NAMES[hundreds]+ " " + "hundred" + elif 0<=number<100: + return int_under_100_to_str(number) def int_under_100_to_str(number): - return "umm..." + if 20 <= number < 100: + tens = number // 10 + ones = number % 10 + if ones == 0: + return TENS_NAMES[tens] + else: + return TENS_NAMES[tens] + "-" + DIGIT_NAMES[ones] + elif 0<= number <20: + return int_under_20_to_str(number) def int_under_20_to_str(number): - return "umm..." + if 10 <= number < 20: + return TWEEN_AND_TEEN_NAMES[number - 10] + elif 0<= number < 10: + return int_under_10_to_str(number) def int_under_10_to_str(number): - return "umm..." + if 0 <= number < 10: + return DIGIT_NAMES[number] def divide_with_remainder(dividend, divisor): """Divides one number by another, using whole-number division. diff --git a/test_numberwords.py b/test_numberwords.py index 0fa6d68..8424af0 100644 --- a/test_numberwords.py +++ b/test_numberwords.py @@ -33,7 +33,7 @@ class TestIntToStr(unittest.TestCase): [int_under_1000000_to_str, 1001, 'one thousand one'], [int_under_1000000_to_str, 1672, 'one thousand six hundred and seventy-two'], [int_under_1000000_to_str, 10000, 'ten thousand'], - [int_under_1000000_to_str, 588567, 'five hundred and ninety-eight thousand five hundred and sixty-seven'], + [int_under_1000000_to_str, 588567, 'five hundred and eighty-eight thousand five hundred and sixty-seven'], ] def test_converts_integer_to_string(self):