Rodripelto

Número _a_letra

Apr 14th, 2022 (edited)
143
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. def unidades(numero):
  2.     unidad = {0:"",1:"uno",2:"dos",3:"tres",4:"cuatro",5:"cinco",6:"seis",7:"siete",8:"ocho",9:"nueve"}
  3.     return unidad[numero]
  4.  
  5. def decenas(numero):
  6.     letras=""
  7.     ldecenas = {10:"diez",11:"once",12:"doce",13:"trece",14:"catorce",15:"quince",16:"dieci",20:"veinte",21:"veinti"}
  8.     ldecenas.update({30:"treinta",40:"cuarenta",50:"cincuenta",60:"sesenta",70:"setenta",80:"ochenta",90:"noventa"})
  9.  
  10.     resto = numero % 10
  11.     decena = numero - resto
  12.     if numero < 10 :
  13.         return unidades(numero)
  14.     elif 10 <= numero <= 15:
  15.         letras = ldecenas[numero]
  16.     elif 16 <= numero <= 19:
  17.         letras = ldecenas[16] + unidades (resto)
  18.     elif numero == 20:
  19.         letras = ldecenas[20]
  20.     elif 21 <= numero <= 29:
  21.         letras = ldecenas[21] + unidades (resto)
  22.     elif 30<= numero and resto == 0:
  23.         letras += ldecenas[decena] + unidades(resto)
  24.     else:
  25.         letras += ldecenas[decena] + " y " + unidades(resto)  
  26.     return letras
  27.  
  28. def centenas(numero):
  29.     letras =""
  30.     resto = numero % 100
  31.     if numero < 100:
  32.         letras = decenas(numero)
  33.     elif numero == 100:
  34.         letras = "cien"
  35.     elif 101 <= numero <= 199:
  36.         letras = "ciento " + decenas(resto)
  37.     elif 200 <= numero <= 499 or 600 <= numero <= 699 or 800 <= numero <=899:
  38.         letras = unidades(numero // 100) + "cientos " + decenas(resto)
  39.     elif 500 <= numero <= 599:
  40.         letras = "quinientos " + decenas(resto)
  41.     elif 700 <= numero <= 799:
  42.         letras = "setecientos " + decenas(resto)
  43.     elif 900 <= numero <= 999:
  44.         letras = "novecientos " + decenas(resto)
  45.     return letras
  46.  
  47. def millares(numero):
  48.     resto = numero % 1000
  49.     millar = numero // 1000
  50.     if numero < 1000:
  51.         letras = centenas(numero)
  52.     elif 1000 <= numero <=1999:
  53.         letras = "mil " + centenas(resto)
  54.     elif 2000 <= numero <= 99999:
  55.         letras = decenas(millar) + " mil " + centenas(resto)
  56.     return letras
  57.  
  58. def numero_letra(numero):
  59.     prefijo=""
  60.     if numero == 0:
  61.         return "Cero"
  62.     elif numero < 0:
  63.         prefijo = "Menos "
  64.         numero *= -1
  65.     elif numero >= 100000:
  66.         return "Lo siento no se contar hasta ese número"
  67.     letras = prefijo + millares(numero)
  68.     return letras.capitalize()
  69.  
  70. while (numero := input("Introduzca un número: "))!="":   print(numero_letra(int(numero)))
RAW Paste Data Copied