Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés.
Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Iniciar sesión Cerrar
Correo:
Contraseña:
Entrar
Recordar sesión en este navegador
Iniciar sesiónIniciar sesiónCrear cuentaCrear cuenta

Python - Transformar números a literales

  Imprimir  
Vista:

Transformar números a literales

Publicado por Abdiel (1 intervención) el 11/10/2003 18:27:42
Hola a todos y todas, quet tal........
necesito saber si Python puede tranformar números a literales ejmplo:
1001 <a> mil uno
o si no que sea así
uno cero cero uno
esperando respuesta gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Transformar números a literales

Publicado por Dani (12 intervenciones) el 10/02/2004 13:01:29
Que yo sepa python no tiene ningun modulo que realize dicha funcion, aunque no me hagas mucho caso que no he estudiado todos los modulos python... de todas formas Python maneja las cadenas de forma muy sencilla y realizar una conversion de números a letras es cosa de niños si empleas un diccionario. Debes tratar los numeros como cadenas desde un principio y con un codigo como el siguiente tendras lo que buscas:
dic={\"0\":\"cero\",\"1\":\"uno\"}
numero=\"1001\"
for n in numero:
print dic[n]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Larry  (1 intervención) el 12/03/2008 23:22:58
Hola te proveeo de dos funciones que te ayudaran, fueron transcritas de un codigo en VB que encontre en :
http://www.lawebdelprogramador.com/codigo/enlace.php?idp=1279&id=97&texto=Visual+Basic+para+Aplicaciones

Si digitan en el shell de python:
numero_to_letras(411641.123)

el resultado sera:
CUATROCIENTOS ONCE MIL SEISCIENTOS CUARENTA Y UNO con 12/100

Espero que les sea de ayuda

A continuacion el codigo:

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 = ""
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)
numero_letras = numero_letras+" con " + str(decimal) +"/100"
print 'numero: ',numero
print 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)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por homara (1 intervención) el 21/05/2008 15:31:52
18,760.00 a numeros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por german (2 intervenciones) el 09/02/2009 19:44:25
Quiero convertir en literales los siguientes números 409,72 60,002 0,008 y 0,347
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por german (2 intervenciones) el 09/02/2009 19:44:26
Quiero convertir en literales los siguientes números 409,72 60,002 0,008 y 0,347
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar