Alguien sabe de esto..??

Marcos Sánchez Provencio rapto en arrakis.es
Mie Jul 16 10:48:16 CEST 2003


Aprovechando la excusa de este mensaje, quiero hacer una llamada a la 
calma. ¿No es una pena que esta rutina no pueda estar en la web de 
Python en castellano? Espero que rebobinemos hasta el punto en que 
estábamos de acuerdo e ilusionados en hacer algo.

PS Soy de Madrid, ya tengo bastante con que riñan los políticos. :-\


Felipe Barousse Boue wrote:
> ArielL
> 
> Ahi te va, un modulito que escribí hace mucho pero que funciona  bien
> para pasar de números a oracion en español. 
> 
> Saludos.
> 
> Felipe Barousse Boué.
> Piensa Technologies - Bufete Consultor de Mexico
> www.piensa.com
> 
> 
> #
> #  num2pal version 1.0
> #
> # Números a palabras en Español.
> # Autor:    Felipe Barousse    fbarouse en piensa.com
> #
> # De mis primeros programas y experimentos  en Python.
> #
> # El algoritmo es muy simple:
> # La función main() solo recibe un número entero y lo 
> # parte en grupos de tres, de ahi decide si son unidades,
> # decenas, miles, etc.
> #
> # Ejemplo:
> #
> # Inicia tu ambiente de python y despues de importar num2pal
> # Python>  num2pal.main('45635')
> # Regresará la cadena: 'Cuarenta y seis mil seis cientos treinta y
> cinco'
> #
> # Externamente habrá que agregar al resultado las unidades (Pesos,
> Dólares,
> #   Litros, Kilos, etc. etc.)  si es que las hay, por supuesto.!
> #
> # Si quieres que tambien traduzca a palabras, por ejemplo los centavos
> # -o la parte fraccional- de una cantidad, solo llama a esta rutina
> # dos veces, una para la parte entera y otra para la parte fraccional
> #
> # Previamente debiste haber separado lo que estan ANTES y DESPUES del
> # punto decimal para tal efecto
> #
> # Copyright 2000-2001       Felipe Barousse Boué
> #                           Bufete Consultor de Mexico - Piensa
> Technologies
> #                           Ap. Cap. Interlomas # 136
> #                           Huixquilucan-Interlomas, 52781
> #                           Ciudad de México,  Mexico
> #                           http://www.piensa.com/
> #                           info en piensa.com
> # LICENCIA DE USO:
> # Este programa puede ser usado libremente bajo el esquema de la
> licencia LGPL
> #
> # En otras palabras, solo deberás darme el credito correspondiente en tu
> # documentación por el uso de esta rutina, aun cuando la modifiques,
> # deberas mencionar que fué basado tu trabajo en ésta idea.
> #
> # NO HAY GARANTIA ALGUNA SOBRE ESTA RUTINA NI POR EL RESULTADO DEL USO
> QUE SE LE DE
> #
> # Este programa es usado en sistemas hecho en Python para aplicaciones
> de negocios,
> # para imprimir facturas y recibos oficiales que requiren las cantidades
> en
> # letra.
> #
> # Gracias!                       Felipe Barousse
> #
> # Ultima modificación:          26 Febrero 2001
> #
> #
> def unidades(x):
>     if x == 0:
>         unidad = "cero"
>     if x == 1:
>         unidad = "un"
>     if x == 2:
>         unidad = "dos"
>     if x == 3:
>         unidad = "tres"
>     if x == 4:
>         unidad = "cuatro"
>     if x == 5:
>         unidad = "cinco"
>     if x == 6:
>         unidad = "seis"
>     if x == 7:
>         unidad = "siete"
>     if x == 8:
>         unidad = "ocho"
>     if x == 9:
>         unidad = "nueve"
>     return unidad
> 
> def teens(x):
>     if x == 0:
>         teenname = "diez"
>     if x == 1:
>         teenname = "once"
>     if x == 2:
>         teenname = "doce"
>     if x == 3:
>         teenname = "trece"
>     if x == 4:
>         teenname = "catorce"
>     if x == 5:
>         teenname = "quince"
>     return teenname
> 
> 
> def tens(x):
>     if x == 1:
>         tensname = "diez"
>     if x == 2:
>         tensname = "veinte"
>     if x == 3:
>         tensname = "treinta"
>     if x == 4:
>         tensname = "cuarenta"
>     if x == 5:
>         tensname = "cincuenta"
>     if x == 6:
>         tensname = "sesenta"
>     if x == 7:
>         tensname = "setenta"
>     if x == 8:
>         tensname = "ochenta"
>     if x == 9:
>         tensname = "noventa"
>     return tensname
> 
> 
> def tercia(num):
>     numero=str(num)
>     if len(numero) == 1:
>         numero='00'+numero
>     if len(numero) == 2:
>         numero='0'+numero
>     a=int(numero[0])
>     b=int(numero[1])
>     c=int(numero[2])
> #       print a, b, c
>     if a == 0:
>         if b == 0:
>             resultado=unidades(c)
>             return resultado
>         elif b == 1:
>             if c >= 0 and c <= 5:
>                 resultado = teens(c)
>                 return resultado
>             elif c >= 6 and c <= 9:
>                 resultado = tens(b)+' y '+unidades(c)
>                 return resultado
>         elif b == 2:
>             if c == 0:
>                 resultado = 'veinte'
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado ='veinti '+unidades(c)
>                 return resultado
>         elif b >=3 and b <= 9:
>             if c == 0:
>                 resultado = tens(b)
>                 return resultado
>             if c >= 1 and c <= 9:
>                 resultado = tens(b)+' y '+unidades(c)
>                 return resultado
>     if a == 1:
>         if b == 0:
>             if c == 0:
>                 resultado = 'cien'
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado ='ciento '+unidades(c)
>                 return resultado
>         elif  b == 1:
>             if c >= 0 and c <= 5:
>                 resultado = 'ciento '+teens(c)
>                 return resultado
>             elif c >= 6 and c <= 9:
>                 resultado = 'ciento '+tens(b)+' y '+unidades(c)
>                 return resultado
>         elif b == 2:
>             if c == 0:
>                 resultado = 'ciento veinte'
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado ='ciento veinti '+unidades(c)
>                 return resultado
>         elif b >= 3 and b <= 9:
>             if c == 0:
>                 resultado = 'ciento '+tens(b)
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado = 'ciento '+tens(b)+ ' y '+unidades(c
> )
>                 return resultado
> 
>     elif a >= 2 and a <= 9:
>         if a == 5:
>             prefix='quinientos '
>         elif a == 7:
>             prefix='setecientos '
>         elif a == 9:
>             prefix='novecientos '
>         else:
>             prefix=unidades(a)+' cientos '
>         if b == 0:
>             if c == 0:
>                 resultado = prefix
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado = prefix+unidades(c)
>                 return resultado
>         elif b == 1:
>             if c >= 0 and c <= 5:
>                 resultado = prefix+teens(c)
>                 return resultado
>             elif c >= 6 and c <= 9:
>                 resultado = prefix+tens(b)+' y '+unidades(c)
>                 return resultado
>         elif b == 2:
>             if c == 0:
>                 resultado = prefix+' veinte'
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado = prefix+' veinti '+unidades(c)
>                 return resultado
>         elif b >= 3 and b <= 9:
>             if c == 0:
>                 resultado = prefix+tens(b)
>                 return resultado
>             elif c > 0 and c <= 9:
>                 resultado = prefix+tens(b)+' y '+unidades(c)
>                 return resultado
> 
> def main(num):
>     result=''
>     numero=str(num)
>     if len(numero) == 1:
>         numero='00000000'+numero
>     if len(numero) == 2:
>         numero='0000000'+numero
>     if len(numero) == 3:
>         numero='000000'+numero
>     if len(numero) == 4:
>         numero='00000'+numero
>     if len(numero) == 5:
>         numero='0000'+numero
>     if len(numero) == 6:
>         numero='000'+numero
>     if len(numero) == 7:
>         numero='00'+numero
>     if len(numero) == 8:
>         numero='0'+numero
>     posicion=1
>     for i in [0,3,6]:
>         var=numero[i]+numero[i+1]+numero[i+2]
>         if int(var) != 0:
>             res=tercia(var)
>             if i == 0:
>                 result=res+" millones "
>             elif i == 3:
>                 result=result+res+" mil "
>             elif i == 6:
>                 result=result+res
>     return result
> 
> 
> 
> On Tue, 2003-07-15 at 11:41, Ariel Lampert wrote:
> 
>>Hola a todos: Estoy empezando a husmear en Pyhton y quisiera saber si
>>ya hay un modulo o algo así, que me permita pasar numeros float a
>>caracter , es decir si ingreso 120 , me entrega "cientoveinte" .
>>Gracias ArielL
>>




Más información sobre la lista de distribución Python-es