forked from TheAlgorithms/Python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
convert_number_to_words.py
111 lines (99 loc) · 3.28 KB
/
convert_number_to_words.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import math
def convert(number: int) -> str:
"""
Given a number return the number in words.
>>> convert(123)
'OneHundred,TwentyThree'
"""
if number == 0:
words = "Zero"
return words
else:
digits = math.log10(number)
digits = digits + 1
singles = {}
singles[0] = ""
singles[1] = "One"
singles[2] = "Two"
singles[3] = "Three"
singles[4] = "Four"
singles[5] = "Five"
singles[6] = "Six"
singles[7] = "Seven"
singles[8] = "Eight"
singles[9] = "Nine"
doubles = {}
doubles[0] = ""
doubles[2] = "Twenty"
doubles[3] = "Thirty"
doubles[4] = "Forty"
doubles[5] = "Fifty"
doubles[6] = "Sixty"
doubles[7] = "Seventy"
doubles[8] = "Eighty"
doubles[9] = "Ninety"
teens = {}
teens[0] = "Ten"
teens[1] = "Eleven"
teens[2] = "Twelve"
teens[3] = "Thirteen"
teens[4] = "Fourteen"
teens[5] = "Fifteen"
teens[6] = "Sixteen"
teens[7] = "Seventeen"
teens[8] = "Eighteen"
teens[9] = "Nineteen"
placevalue = {}
placevalue[2] = "Hundred,"
placevalue[3] = "Thousand,"
placevalue[5] = "Lakh,"
placevalue[7] = "Crore,"
temp_num = number
words = ""
counter = 0
digits = int(digits)
while counter < digits:
current = temp_num % 10
if counter % 2 == 0:
addition = ""
if counter in placevalue and current != 0:
addition = placevalue[counter]
if counter == 2:
words = singles[current] + addition + words
elif counter == 0:
if ((temp_num % 100) // 10) == 1:
words = teens[current] + addition + words
temp_num = temp_num // 10
counter += 1
else:
words = singles[current] + addition + words
else:
words = doubles[current] + addition + words
else:
if counter == 1:
if current == 1:
words = teens[number % 10] + words
else:
addition = ""
if counter in placevalue:
addition = placevalue[counter]
words = doubles[current] + addition + words
else:
addition = ""
if counter in placevalue:
if current == 0 and ((temp_num % 100) // 10) == 0:
addition = ""
else:
addition = placevalue[counter]
if ((temp_num % 100) // 10) == 1:
words = teens[current] + addition + words
temp_num = temp_num // 10
counter += 1
else:
words = singles[current] + addition + words
counter += 1
temp_num = temp_num // 10
return words
if __name__ == "__main__":
import doctest
doctest.testmod()