Skip to content

Instantly share code, notes, and snippets.

@gkmngrgn
Created October 11, 2024 20:16
Show Gist options
  • Save gkmngrgn/ac469bb1d7dd36db52362b3594ff46cb to your computer and use it in GitHub Desktop.
Save gkmngrgn/ac469bb1d7dd36db52362b3594ff46cb to your computer and use it in GitHub Desktop.
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