This program created by me spells a number in the standard notation (Billions, Millions etc). I was wondering if there is a better way to do the same thing, or if I have been a victim of some of the bad practices in this language.
I am fairly new to Python and have only been learning it for the past 20 days. Any other types of suggestions and feedback on my variable naming practices, techniques would be wonderful.
names_dict = {}
names_dict['ones'] = {0: '', 1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine'}
names_dict['tens'] = {0: '', 2: 'twenty', 3: 'thirty', 4: 'fourty', 5: 'fifty', 6: 'sixty', 7: 'seventy', 8: 'eighty', 9: 'ninty'}
exep = {0: 'ten', 1: 'eleven', 2: 'twelve', 3: 'thirteen', 4: 'fourteen', 5: 'fifteen', 6: 'sixteen', 7: 'seventeen', 8: 'eighteen', 9: 'ninteen'}
sufix = {0: 'billion', 1: 'million', 2: 'thousand', 3: ''}
# int ----> list
def digit_extract(num):
digit = [0]*12
iterator = 0
while num != 0:
digit[iterator] = num % 10
iterator += 1
num //= 10
return digit[::-1]
#list [3 digit] to str
def hundered(three_digit):
name = ''
if three_digit[0] != 0:
name += names_dict['ones'][three_digit[0]] + ' ' + 'hundered' + ' '
if three_digit[1] != 1:
if three_digit[1] != 0:
name += names_dict['tens'][three_digit[1]] + ' '
if three_digit[2] != 0:
name += names_dict['ones'][three_digit[2]]
else:
name += exep[three_digit[2]]
return name
def numberNames():
num = int(input('Enter the number: '))
digits = digit_extract(num)
final_name = ''
for i in range(4):
hund = hundered(digits[i*3: (i*3) + 3])
if hund != '':
final_name += hund + ' ' + sufix[i] + ' '
print(final_name.title())
numberNames()