Mundo em Python

Número em espanhol por extenso (em usando)

from tkinter import *

# Criando a interface
root = Tk()
root.geometry("500x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Número em espanhol por extenso") titulo = Label(text="Número em espanhol por extenso",
font=("Arial", "21", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05) texto_sub1 = Label(text="Número :", font=("Arial", "18", "bold"),
bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.2, rely=0.25) Número = StringVar()
Número_entrada = Entry(textvariable=Número,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Número_entrada.place(relx=0.55, rely=0.26, relwidth=0.35) # Função para converter números para espanhol
def numero_em_espanhol(n):
if n < 0:
return "menos " + numero_em_espanhol(-n) unidades = ["", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"]
especiais = ["diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve"]
dezenas = ["", "diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"]
centenas = ["", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos"] if n == 0:
return "cero"
elif n == 100:
return "cien"
elif n < 10:
return unidades[n]
elif n < 20:
return especiais[n - 10]
elif n < 100:
return dezenas[n // 10] if n % 10 == 0 else dezenas[n // 10] + " y " + unidades[n % 10]
elif n < 1000:
return centenas[n // 100] if n % 100 == 0 else centenas[n // 100] + " " + numero_em_espanhol(n % 100)
elif n < 1000000:
if n == 1000:
return "mil"
mil = "mil" if n // 1000 == 1 else numero_em_espanhol(n // 1000) + " mil"
return mil if n % 1000 == 0 else mil + " " + numero_em_espanhol(n % 1000)
elif n < 1000000000:
if n == 1000000:
return "un millón"
milhoes = numero_em_espanhol(n // 1000000) + " millón" if n // 1000000 == 1 else numero_em_espanhol(n // 1000000) + " millones"
return milhoes if n % 1000000 == 0 else milhoes + " " + numero_em_espanhol(n % 1000000)
elif n < 1000000000000:
if n == 1000000000:
return "un billón"
bilhoes = numero_em_espanhol(n // 1000000000) + " billón" if n // 1000000000 == 1 else numero_em_espanhol(n // 1000000000) + " billones"
return bilhoes if n % 1000000000 == 0 else bilhoes + " " + numero_em_espanhol(n % 1000000000)
else:
return "Número muito grande!"

# Função do botão para converter número
def app():
try:
n = int(Número.get())
resultado = numero_em_espanhol(n)
resultado_texto.config(text=resultado)
except ValueError:
resultado_texto.config(text="Entrada inválida! Digite um número inteiro.") # Função para limpar os campos
def limpar():
Número_entrada.delete(0, END)
resultado_texto.config(text="") # Botões
but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.45, relwidth=0.25, relheight=0.1) but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.45, relwidth=0.25, relheight=0.1) but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.45, relwidth=0.25, relheight=0.1) # Área do resultado
resultado_texto = Label(text="", font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.65, relwidth=0.9, relheight=0.3) # Executando o loop da interface
root.mainloop()
0