1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # -*- coding: utf-8 -*-
- import unittest
- def numero_to_letras(numero):
- indicador = [("",""),("MIL","MIL"),("MILLON","MILLONES"),("MIL","MIL"),("BILLON","BILLONES")]
- entero = int(numero)
- decimal = int(round((numero - entero)*100))
- #print 'decimal : ',decimal
- contador = 0
- numero_letras = ""
- numero_letrasd = ""
- while entero >0:
- a = entero % 1000
- if contador == 0:
- en_letras = convierte_cifra(a,1).strip()
- else :
- en_letras = convierte_cifra(a,0).strip()
- if a==0:
- numero_letras = en_letras+" "+numero_letras
- elif a==1:
- if contador in (1,3):
- numero_letras = indicador[contador][0]+" "+numero_letras
- else:
- numero_letras = en_letras+" "+indicador[contador][0]+" "+numero_letras
- else:
- numero_letras = en_letras+" "+indicador[contador][1]+" "+numero_letras
- numero_letras = numero_letras.strip()
- contador = contador + 1
- entero = int(entero / 1000)
- contadord=0
- while decimal >0:
- d = decimal % 1000
- if contadord == 0:
- en_letrasd = convierte_cifra(d,1).strip()
- numero_letrasd =" COM "+str(en_letrasd.strip())
- contadord = contadord + 1
- decimal = int(decimal / 1000)
- numero_letras = numero_letras+ str(numero_letrasd)
- # print 'numero: ',numero
- # print numero_letras
- return numero_letras
- def convierte_cifra(numero,sw):
- lista_centana = ["",("CIEN","CIENTO"),"DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"]
- lista_decena = ["",("DIEZ","ONCE","DOCE","TRECE","CATORCE","QUINCE","DIECISEIS","DIECISIETE","DIECIOCHO","DIECINUEVE"),
- ("VEINTE","VEINTI"),("TREINTA","TREINTA Y "),("CUARENTA" , "CUARENTA Y "),
- ("CINCUENTA" , "CINCUENTA Y "),("SESENTA" , "SESENTA Y "),
- ("SETENTA" , "SETENTA Y "),("OCHENTA" , "OCHENTA Y "),
- ("NOVENTA" , "NOVENTA Y ")
- ]
- lista_unidad = ["",("UN" , "UNO"),"DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE"]
- centena = int (numero / 100)
- decena = int((numero -(centena * 100))/10)
- unidad = int(numero - (centena * 100 + decena * 10))
- #print "centena: ",centena, "decena: ",decena,'unidad: ',unidad
- texto_centena = ""
- texto_decena = ""
- texto_unidad = ""
- #Validad las centenas
- texto_centena = lista_centana[centena]
- if centena == 1:
- if (decena + unidad)!=0:
- texto_centena = texto_centena[1]
- else :
- texto_centena = texto_centena[0]
- #Valida las decenas
- texto_decena = lista_decena[decena]
- if decena == 1 :
- texto_decena = texto_decena[unidad]
- elif decena > 1 :
- if unidad != 0 :
- texto_decena = texto_decena[1]
- else:
- texto_decena = texto_decena[0]
- #Validar las unidades
- #print "texto_unidad: ",texto_unidad
- if decena != 1:
- texto_unidad = lista_unidad[unidad]
- if unidad == 1:
- texto_unidad = texto_unidad[sw]
- return "%s %s %s" %(texto_centena,texto_decena,texto_unidad)
|