Mundo em Python

Determina o signo e decano

from tkinter import *

def validar_data(dia, mes):
if mes in [1, 3, 5, 7, 8, 10, 12]:
return 1 <= dia <= 31
elif mes in [4, 6, 9, 11]:
return 1 <= dia <= 30
elif mes == 2:
return 1 <= dia <= 29
else:
return False

def determinar_signo(dia, mes):
if (mes == 3 and dia >= 21) or (mes == 4 and dia <= 19):
return "Carneiro"
elif (mes == 4 and dia >= 20) or (mes == 5 and dia <= 20):
return "Touro"
elif (mes == 5 and dia >= 21) or (mes == 6 and dia <= 20):
return "Gémeos"
elif (mes == 6 and dia >= 21) or (mes == 7 and dia <= 22):
return "Caranguejo"
elif (mes == 7 and dia >= 23) or (mes == 8 and dia <= 22):
return "Leão"
elif (mes == 8 and dia >= 23) or (mes == 9 and dia <= 22):
return "Virgem"
elif (mes == 9 and dia >= 23) or (mes == 10 and dia <= 22):
return "Balança"
elif (mes == 10 and dia >= 23) or (mes == 11 and dia <= 21):
return "Escorpião"
elif (mes == 11 and dia >= 22) or (mes == 12 and dia <= 21):
return "Sagitário"
elif (mes == 12 and dia >= 22) or (mes == 1 and dia <= 19):
return "Capricórnio"
elif (mes == 1 and dia >= 20) or (mes == 2 and dia <= 18):
return "Aquário"
else:
return "Peixes"

def determinar_decano(dia, signo):
decanos = {
"Carneiro": [(10, "Marte", "Corajoso, impulsivo e cheio de iniciativa."),
(20, "Sol", "Carismático, criativo e líder nato."),
(31, "Vénus", "Diplomático, romântico e amante da arte.")],
"Touro": [(10, "Vénus", "Estável, sensível e focado nos prazeres."),
(20, "Mercúrio", "Prático, analítico e comunicativo."),
(31, "Saturno", "Persistente, disciplinado e trabalhador.")],
"Gémeos": [(10, "Mercúrio", "Comunicativo, curioso e inquieto."),
(20, "Vénus", "Sociável, encantador e artístico."),
(31, "Urano", "Inovador, excêntrico e progressista.")],
"Caranguejo": [(10, "Lua", "Emocional, protetor e ligado à família."),
(20, "Plutão", "Intenso, transformador e determinado."),
(31, "Neptuno", "Sonhador, espiritual e compassivo.")],
"Leão": [(10, "Sol", "Confiante, criativo e autoritário."),
(20, "Júpiter", "Otimista, generoso e visionário."),
(31, "Marte", "Energetico, corajoso e determinado.")],
"Virgem": [(10, "Mercúrio", "Detalhista, lógico e perfeccionista."),
(20, "Vénus", "Equilibrado, gentil e esteticamente sensível."),
(31, "Saturno", "Pragmático, responsável e trabalhador.")],
"Balança": [(10, "Vénus", "Amável, diplomático e sociável."),
(20, "Saturno", "Justo, responsável e metódico."),
(31, "Júpiter", "Visionário, otimista e motivador.")],
"Escorpião": [(10, "Plutão", "Intenso, misterioso e profundo."),
(20, "Neptuno", "Empático, sonhador e intuitivo."),
(31, "Lua", "Protetor, emocional e sensível.")],
"Sagitário": [(10, "Júpiter", "Aventureiro, otimista e filosófico."),
(20, "Marte", "Energético, determinado e competitivo."),
(31, "Sol", "Brilhante, expressivo e líder nato.")],
"Capricórnio": [(10, "Saturno", "Disciplinado, responsável e persistente."),
(20, "Vénus", "Paciente, afetuoso e amante da arte."),
(31, "Mercúrio", "Inteligente, prático e organizado.")],
"Aquário": [(10, "Urano", "Inovador, excêntrico e humanitário."),
(20, "Mercúrio", "Intelectual, lógico e comunicativo."),
(31, "Vénus", "Charmoso, amigável e sociável.")],
"Peixes": [(10, "Neptuno", "Sonhador, compassivo e espiritual."),
(20, "Lua", "Emotivo, intuitivo e conectado ao inconsciente."),
(31, "Plutão", "Transformador, profundo e misterioso.")],
} for limite, planeta, descricao in decanos[signo]:
if dia <= limite:
return f"Seu decano é regido por {planeta}. {descricao}"

def app():
try:
mes = int(mes_nascimento_entrada.get())
dia = int(dia_nascimento_entrada.get()) if not validar_data(dia, mes):
resultado_texto.config(text="Data inválida! Por favor, insira uma data válida.", fg="red")
return

signo = determinar_signo(dia, mes)
decano = determinar_decano(dia, signo)
resultado_texto.config(text=f"Seu signo é {signo}.\n{decano}", fg="black")
except ValueError:
resultado_texto.config(text="Por favor, insira valores numéricos válidos.", fg="red") def limpar():
dia_nascimento_entrada.delete(0, END)
mes_nascimento_entrada.delete(0, END)
resultado_texto.config(text="")
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Determina o signo e decano")
Label(text="Determina o signo e decano",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3").place(relx=0.2, rely=0.05) Label(root, text="Dia de nascimento:", font=("Arial", "20", "bold"),
bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.25)
Label(root, text="Mês de nascimento:", font=("Arial", "20", "bold"),
bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.4) # Entradas
dia_nascimento_entrada = Entry(root,bg="white", fg="#107db2", justify='center', font=("Arial", "14", "bold"))
dia_nascimento_entrada.place(relx=0.45, rely=0.27,relwidth=0.35) mes_nascimento_entrada = Entry(root,bg="white", fg="#107db2", justify='center', font=("Arial", "14", "bold"))
mes_nascimento_entrada.place(relx=0.45, rely=0.43,relwidth=0.35) but1 = Button(text="Calcular",font=("Arial", "12", "bold"),bg='#107db2', fg='white',
command=app)
but1.place(relx=0.1, rely=0.65, 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.65, 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.65, relwidth=0.25, relheight=0.1) # Resultado
resultado_texto = Label(root, text="",font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15) root.mainloop()
0