Mundo em Python

Número em Alemão por extenso

from tkinter import *

root = Tk()
root.geometry("500x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Número em Alemão por extenso") titulo = Label(text="Número em Alemão 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) def numero_em_alemao(n):
if n < 0:
return "minus " + numero_em_alemao(-n) unidades = ["", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun"]
especiais = ["zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn",
"neunzehn"]
dezenas = ["", "", "zwanzig", "dreißig", "vierzig", "fünfzig", "sechzig", "siebzig", "achtzig", "neunzig"]
centenas = ["", "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun"] if n == 0:
return "null"
elif n == 100:
return "hundert"
elif n < 10:
return unidades[n]
elif n < 20:
return especiais[n - 10]
elif n < 100:
if n % 10 == 0:
return dezenas[n // 10]
else:
return unidades[n % 10] + "und" + dezenas[n // 10]
elif n < 1000:
if n == 100:
return "hundert"
elif n % 100 == 0:
return unidades[n // 100] + "hundert"
else:
return unidades[n // 100] + "hundert " + numero_em_alemao(n % 100)
elif n < 1000000:
if n == 1000:
return "tausend"
if n // 1000 == 1:
return "eintausend" + (" " + numero_em_alemao(n % 1000) if n % 1000 != 0 else "")
else:
return numero_em_alemao(n // 1000) + " tausend" + (
" " + numero_em_alemao(n % 1000) if n % 1000 != 0 else "")
elif n < 1000000000:
if n // 1000000 == 1:
return "eine Million" + (" " + numero_em_alemao(n % 1000000) if n % 1000000 != 0 else "")
else:
return numero_em_alemao(n // 1000000) + " Millionen" + (
" " + numero_em_alemao(n % 1000000) if n % 1000000 != 0 else "")
elif n < 1000000000000:
if n // 1000000000 == 1:
return "eine Milliarde" + (" " + numero_em_alemao(n % 1000000000) if n % 1000000000 != 0 else "")
else:
return numero_em_alemao(n // 1000000000) + " Milliarden" + (
" " + numero_em_alemao(n % 1000000000) if n % 1000000000 != 0 else "")
else:
return "Zahl zu groß!"

def app():
try:
n = int(Número.get())
resultado = numero_em_alemao(n)
resultado_texto.config(text=resultado)
except ValueError:
resultado_texto.config(text="Entrada inválida! Digite um número inteiro.")
def limpar():
Número_entrada.delete(0, END)
resultado_texto.config(text="")
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)
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) root.mainloop()
0