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.
This commit is contained in:
Justin Toombs
2023-08-10 13:10:16 -04:00
parent 5af4ee0a29
commit 04055e67dc
3 changed files with 43 additions and 38 deletions

View File

@@ -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):