From 04055e67dc7909ab4e542eccf1c607445e4f1b94 Mon Sep 17 00:00:00 2001 From: Justin Toombs Date: Thu, 10 Aug 2023 13:10:16 -0400 Subject: [PATCH] All functions were given proper if/then statements to write out the full wording for any number typed up all the way to one million. This particular lab certainly made more sense than others as it truly felt like every step built upon the other and provided the necessary foundation to succeed in writing remaining code. When some of the answers were provided, the rest began to fall in line. --- numberwords.py | 46 ++++++++++++++++++++++++--------------------- planning.md | 17 +++++++++-------- test_numberwords.py | 18 +++++++++--------- 3 files changed, 43 insertions(+), 38 deletions(-) diff --git a/numberwords.py b/numberwords.py index 0411373..8d856b0 100644 --- a/numberwords.py +++ b/numberwords.py @@ -11,43 +11,47 @@ TWEEN_AND_TEEN_NAMES = [ "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" ] TENS_NAMES = [ - "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" + "", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" ] def int_under_1000000_to_str(number): - "Returns a textual representation of the number." - check_number_in_range(abs(number), 0, MAXIMUM) if number < 1000: return int_under_1000_to_str(number) else: - thousands, hundreds = divide_with_remainder(number, 1000) - thousands_text = int_under_1000_to_str(thousands) - hundreds_text = int_under_1000_to_str(hundreds) - return thousands_text + " thousand " + hundreds_text + thousands, hundreds_tens_ones = divide_with_remainder(number, 1000) + if hundreds_tens_ones == 0: + return int_under_1000_to_str(thousands) + " thousand" + else: + return int_under_1000_to_str(thousands) + " thousand " + int_under_1000_to_str(hundreds_tens_ones) def int_under_1000_to_str(number): - "Returns a textual representation of the number" - check_number_in_range(number, 0, 1000) if number < 100: return int_under_100_to_str(number) else: - hundreds, tens = divide_with_remainder(number, 100) - hundreds_text = int_under_10_to_str(hundreds) - tens_text = int_under_100_to_str(tens) - return hundreds_text + " hundred and " + tens_text + hundreds, tens_and_ones = divide_with_remainder(number, 100) + if tens_and_ones == 0: + return int_under_10_to_str(hundreds) + " hundred" + else: + return int_under_10_to_str(hundreds) + " hundred and " + int_under_100_to_str(tens_and_ones) + def int_under_100_to_str(number): - check_number_in_range(number, 0, 100) - tens, ones = divide_with_remainder(number, 10) - if tens == 0: - return int_under_10_to_str(number) - elif tens == 1: - return TWEEN_AND_TEEN_NAMES[ones] + if number < 20: + return int_under_20_to_str(number) else: - return TENS_NAMES[tens] + '-' + int_under_10_to_str(ones) + tens, ones = divide_with_remainder(number, 10) + if ones == 0: + return TENS_NAMES[tens] + else: + return TENS_NAMES[tens] + "-" + int_under_10_to_str(ones) + +def int_under_20_to_str(number): + if number < 10: + return int_under_10_to_str(number) + else: + return TWEEN_AND_TEEN_NAMES[number-10] def int_under_10_to_str(number): - check_number_in_range(number, 0, 10) return DIGIT_NAMES[number] def check_number_in_range(number, minimum, maximum): diff --git a/planning.md b/planning.md index 40d428a..b80ac19 100644 --- a/planning.md +++ b/planning.md @@ -35,21 +35,22 @@ return digit_names[number] ``` ## Integers under 20 -If the integer is under 10, then use the procedure described above. -Otherwise, ... (this is where you take over!) +If integer < 10, then return digit_names[number] +Else return digit_names between 10 and 19 ## Integers under 100 - +If integer < 20, return "Integers under 20" +Else return integer between 20 and 99 with proper "and" ## Integers under 1000 - +If integer < 100, return "Integers under 100" +Else return integer between 100 and 999 with proper "and" ## Integers under 1000000 - +If integer < 1000, return "Integers under 1000" +Else return integer between 1000 and 999999 with proper "and" ## Negative integers down to -1 million -We won't deal with negative integers in this problem set, -but how would you deal with a negative integer, using the -functions above? +Use the above integers but add a negative symbol to all integers and reverse less than to greater than diff --git a/test_numberwords.py b/test_numberwords.py index e40f218..330e638 100644 --- a/test_numberwords.py +++ b/test_numberwords.py @@ -12,17 +12,17 @@ test_cases = [ [11, 'eleven'], [15, 'fifteen'], [18, 'eighteen'], - [43, 'fifty-three'], - [60, 'seventy-zero'], - [89, 'ninety-nine'], - [100, 'one hundred and zero'], + [43, 'forty-three'], + [60, 'sixty'], + [89, 'eighty-nine'], + [100, 'one hundred'], [212, 'two hundred and twelve'], - [755, 'seven hundred and sixty-five'], - [1000, 'one thousand zero'], - [1001, 'one thousand one'], + [755, 'seven hundred and fifty-five'], + [1000, 'one thousand'], + [1001, 'one thousand and one'], [1672, 'one thousand six hundred and eighty-two'], - [10000, 'ten thousand zero'], - [588567, 'five hundred and ninety-eight thousand five hundred and seventy-seven'], + [10000, 'ten thousand'], + [588567, 'five hundred and eighty-eight thousand five hundred and sixty-seven'], ] for int_input, expected_output in test_cases: