generated from mwc/problemset_numberwords
final submission number words problem sentences
I was able to add the remaining numbers above 1000 without too much difficulty. As I worked, I used number.py to test the numbers, which helped correct errors early on and I didn’t have too many issues. I think the planning really helped with this problem set. I only ran into 2 problems while debugging with test_numberwords.py. The first was not including the word “and”, which was an easy fix. The second turned out to be an error in test_numberwords.py as one of the numbers 588567 did not match the english type. I changed the number to 589567 in the test program which fixed that error. This problem set was one of the easier assignments for me.
This commit is contained in:
parent
237224805e
commit
f2ac21ab16
|
@ -14,21 +14,41 @@ TENS_NAMES = [
|
|||
"", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
|
||||
]
|
||||
|
||||
def int_under_1000000_to_str(number):
|
||||
return None
|
||||
def int_under_1000000_to_str(number): #also does 1 million just for fun!
|
||||
if number <1000:
|
||||
return int_under_1000_to_str(number)
|
||||
elif number == 1000000:
|
||||
return "one million"
|
||||
elif number < 1000000:
|
||||
thousands_prefix = divide_with_remainder(number, 1000)
|
||||
if number % 1000 == 0:
|
||||
return int_under_1000_to_str(thousands_prefix[0]) + " thousand"
|
||||
else:
|
||||
return int_under_1000_to_str(thousands_prefix[0]) + " thousand " + int_under_1000000_to_str(thousands_prefix[1])
|
||||
else:
|
||||
return "Error, Try again, number must be 1 million or less, positive numbers only"
|
||||
|
||||
def int_under_1000_to_str(number):
|
||||
return None
|
||||
if number <100:
|
||||
return int_under_100_to_str(number)
|
||||
elif number<1000:
|
||||
hundreds_prefix = divide_with_remainder(number, 100)
|
||||
if number % 100 ==0:
|
||||
return DIGIT_NAMES[hundreds_prefix[0]] + " hundred"
|
||||
else:
|
||||
return DIGIT_NAMES[hundreds_prefix[0]] + " hundred and " + int_under_100_to_str(hundreds_prefix[1])
|
||||
|
||||
|
||||
def int_under_100_to_str(number):
|
||||
if number <20:
|
||||
return int_under_20_to_str
|
||||
return int_under_20_to_str(number)
|
||||
elif number <100:
|
||||
prefix = divide_with_remainder(number,10)
|
||||
tens_prefix = divide_with_remainder(number,10)
|
||||
if number % 10==0:
|
||||
return TENS_NAMES[prefix[0]]
|
||||
return TENS_NAMES[tens_prefix[0]]
|
||||
else:
|
||||
return (TENS_NAMES[prefix[0]]) + "-" +(DIGIT_NAMES[prefix[1]])
|
||||
return TENS_NAMES[tens_prefix[0]] + "-" +DIGIT_NAMES[tens_prefix[1]]
|
||||
|
||||
|
||||
|
||||
def int_under_20_to_str(number):
|
||||
|
@ -36,8 +56,7 @@ def int_under_20_to_str(number):
|
|||
return int_under_10_to_str(number)
|
||||
elif number <20:
|
||||
return TWEEN_AND_TEEN_NAMES[number-10]
|
||||
else:
|
||||
return "Error"
|
||||
|
||||
|
||||
def int_under_10_to_str(number):
|
||||
return DIGIT_NAMES[number]
|
||||
|
|
4
nw.py
4
nw.py
|
@ -4,11 +4,11 @@
|
|||
# Ex: python nw.py 145
|
||||
|
||||
from argparse import ArgumentParser
|
||||
from numberwords import int_under_100_to_str
|
||||
from numberwords import int_under_1000000_to_str
|
||||
|
||||
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_100_to_str(args.number)
|
||||
text = int_under_1000000_to_str(args.number)
|
||||
print(text)
|
||||
|
||||
|
|
|
@ -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, 598567, 'five hundred and ninety-eight thousand five hundred and sixty-seven'],
|
||||
]
|
||||
|
||||
def test_converts_integer_to_string(self):
|
||||
|
|
Loading…
Reference in New Issue