Submitting to check.

This commit is contained in:
Thomas Naber 2023-08-12 14:19:23 -04:00
parent bd88ab0514
commit 9799841594
2 changed files with 62 additions and 16 deletions

View File

@ -4,31 +4,56 @@
# Functions to print out a verbal representation of an integer. # Functions to print out a verbal representation of an integer.
MAXIMUM = 1000000 MAXIMUM = 1000000
DIGIT_NAMES = [ DIGIT_NAMES = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 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"]
TWEEN_AND_TEEN_NAMES = [
"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" def check_number_in_range(number, minimum, maximum):
] if minimum < number & number < maximum:
TENS_NAMES = [ return True
"", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" else:
] return False
def int_under_1000000_to_str(number): def int_under_1000000_to_str(number):
return "umm..." thousands, hundreds = divide_with_remainder(number, 1000)
if number < 1000:
return int_under_1000_to_str(number)
elif number % 1000 == 0:
return int_under_1000_to_str(thousands) + " thousand"
else:
name = int_under_1000_to_str(thousands) + " thousand, " + int_under_1000_to_str(hundreds)
return name
def int_under_1000_to_str(number): def int_under_1000_to_str(number):
return "umm..." hundreds, tens = divide_with_remainder(number, 100)
if number < 100:
return int_under_100_to_str(number)
elif number % 100 == 0:
return DIGIT_NAMES[hundreds] + " hundred"
else:
return DIGIT_NAMES[hundreds] + " hundred and " + int_under_100_to_str(tens)
def int_under_100_to_str(number): def int_under_100_to_str(number):
return "umm..." tens, ones = divide_with_remainder(number, 10)
if number < 20:
return int_under_20_to_str(number)
elif number % 10 != 0:
return TENS_NAMES[tens] + "-" + DIGIT_NAMES[ones]
else:
return TENS_NAMES[tens]
def int_under_20_to_str(number): def int_under_20_to_str(number):
return "umm..." tens, ones = divide_with_remainder(number, 10)
if number < 10:
return int_under_10_to_str(number)
else:
return TWEEN_AND_TEEN_NAMES[ones]
def int_under_10_to_str(number): def int_under_10_to_str(number):
return "umm..." return DIGIT_NAMES[number]
def divide_with_remainder(dividend, divisor): def divide_with_remainder(dividend, divisor):
"""Divides one number by another, using whole-number division. """Divides one number by another, using whole-number division.
Returns the quotient and the remainder. Returns the quotient and the remainder.

View File

@ -36,20 +36,41 @@ return digit_names[number]
## Integers under 20 ## Integers under 20
If the integer is under 10, then use the procedure described above. If the integer is under 10, then use the procedure described above.
Otherwise, ... (this is where you take over!) Otherwise, you still need to know the name of the integer since it has a unique name. Create a list of integers called teens_names and index from 0 to 9. Then you can look up the integer's name.
The list would be:
```
teens_names = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]
return teens_names[number]
```
## Integers under 100 ## Integers under 100
If the integer is less than 20, then use either of the procedures described above.
Otherwise:
- Look at the first digit to know what "tens" name it's called.
- Then, if the second digit is not 0, access the digit_names list to create the secont part of the word.
## Integers under 1000 ## Integers under 1000
If the integer is less than 100, then use one of the procedures above.
Otherwise:
- Look at the first digit and use the digit_names list for the first part of the word
- Add the word "hundred"
- Use the procedures for integers under 100 to come up with the rest of the word.
## Integers under 1000000 ## Integers under 1000000
If the integer is less than 1000, use one of the procedures above.
Otherwise:
- Look at the first three digits. Use the procedure for integers under 1000 for the first part of the name.
- Add the word thousand
- use the procedure for integers under 1000 to create the last part of the name.
## Negative integers down to -1 million ## Negative integers down to -1 million
We won't deal with negative integers in this problem set, We won't deal with negative integers in this problem set,
but how would you deal with a negative integer, using the but how would you deal with a negative integer, using the
functions above? functions above?
- Use the procedures above, but concatenate them to the word "negative"