Created
October 11, 2024 20:16
-
-
Save gkmngrgn/ac469bb1d7dd36db52362b3594ff46cb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
numbers_in_words = { | |
1: "one", | |
2: "two", | |
3: "three", | |
4: "four", | |
5: "five", | |
6: "six", | |
7: "seven", | |
8: "eight", | |
9: "nine", | |
10: "ten", | |
11: "eleven", | |
12: "twelve", | |
13: "thirteen", | |
14: "fourteen", | |
15: "fifteen", | |
16: "sixteen", | |
17: "seventeen", | |
18: "eighteen", | |
19: "nineteen", | |
20: "twenty", | |
30: "thirty", | |
40: "forty", | |
50: "fifty", | |
60: "sixty", | |
70: "seventy", | |
80: "eighty", | |
90: "ninety", | |
} | |
def convert_number_to_text(number: int) -> str: | |
if number in numbers_in_words: | |
return numbers_in_words[number] | |
result = "" | |
if number >= 1000: | |
thousands, remainder = divmod(number, 1000) | |
result = f"{convert_number_to_text(thousands)} thousand" | |
if remainder > 0: | |
result += f" {convert_number_to_text(remainder)}" | |
return result.strip() | |
if number >= 20: | |
tens, ones = divmod(number, 10) | |
if tens <= 9: | |
if ones == 0: | |
result = numbers_in_words[tens * 10] | |
else: | |
result = f"{numbers_in_words[tens * 10]} {numbers_in_words[ones]}" | |
else: | |
hundreds, tens = divmod(number, 100) | |
if hundreds <= 9: | |
if tens == 0: | |
result = f"{numbers_in_words[hundreds]} hundred" | |
else: | |
result = f"{numbers_in_words[hundreds]} hundred {convert_number_to_text(tens)}" | |
return result.strip() | |
if __name__ == "__main__": | |
assert convert_number_to_text(5) == "five" | |
assert convert_number_to_text(10) == "ten" | |
assert convert_number_to_text(11) == "eleven" | |
assert convert_number_to_text(12) == "twelve" | |
assert convert_number_to_text(13) == "thirteen" | |
assert convert_number_to_text(14) == "fourteen" | |
assert convert_number_to_text(15) == "fifteen" | |
assert convert_number_to_text(20) == "twenty" | |
assert convert_number_to_text(31) == "thirty one" | |
assert convert_number_to_text(87) == "eighty seven" | |
assert convert_number_to_text(100) == "one hundred" | |
assert convert_number_to_text(219) == "two hundred nineteen" | |
assert convert_number_to_text(999) == "nine hundred ninety nine" | |
assert convert_number_to_text(1000) == "one thousand" | |
assert convert_number_to_text(1354) == "one thousand three hundred fifty four" | |
assert convert_number_to_text(123456) == "one hundred twenty three thousand four hundred fifty six" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment