Olá pessoal, minha contribuição ao forum: :P Basicamente é uma classe que com recursão consegue pegar um numero e escrever por extenso.. class NumberFormat:
""" Classe que dado um numero retorna este por extenso.
Autor Andrew S Aguiar
"""
NUMEROS = {0:'zero',
1:'um',
2:'dois',
3:'tres',
4:'quatro',
5:'cinco',
6:'seis',
7:'sete',
8:'oito',
9:'nove',
10:'dez',
11:'onze',
12:'doze',
13:'treze',
14:'quatorze',
15:'quinze',
16:'dezesseis',
17:'dezesete',
18:'dezoito',
19:'dezenove',
20:'vinte',
30:'trinta',
40:'quarenta',
50:'cinquenta',
60:'sessenta',
70:'setenta',
80:'oitenta',
90:'noventa',
100:"cento",
200:"duzentos",
300:"trezentos",
400:"quatrocentos",
500:"quinhentos",
600:"seiscentos",
700:"setecentos",
800:"oitocentos",
900:"novecentos",
1000:"mil"}
def __format_(self, number):
resultado = ''
if number == '':
resultado = ''
elif number in NumberFormat.NUMEROS.keys():
resultado = NumberFormat.NUMEROS[ number ]
return resultado
else:
primeiro_character = int(str(number)[0]) * (10 ** (len(str(number)) - 1) )
resto = str(number)[1:len(str(number))]
resto = str(self.__format_( int(resto) ))
resultado = self.__format_( primeiro_character )
if resto != '':
resultado += " e " + resto
return resultado
def format(self,numero):
"""Escreve o numero por extenso.
"""
return self.__format_(int(numero))
# Um pequeno Teste
if __name__ == "__main__":
for i in range(0,1111):
print NumberFormat().format(i) Falow a todos..