Python - Transformar números a literales

 
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:
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
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
3
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 26 puestos en Python (en relación al último mes)
Gráfica de Python

RE:Transformar números a literales

Publicado por Marco Antonio (1 intervención) el 20/03/2018 01:41:37
Es exactamente lo que estaba buscando, gracias
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 ivan (1 intervención) el 17/10/2018 15:48:46
me salta error de sintaxis en la linea 27 ! lo copie y lo pegue en sublime text 3

de igual forma lo que necesito es un codigo que trasnforme numeros de 4 cifras a literar. gracias
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
Imágen de perfil de xve
Val: 1.347
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

RE:Transformar números a literales

Publicado por xve (1634 intervenciones) el 17/10/2018 18:26:32
Que error te da???

Puede ser que lo ejecutes con Python3?
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 Edu (1 intervención) el 03/12/2019 04:58:23
Excelente aporte
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