Títulos do Futebol Brasileiro

from tkinter import *
from collections import defaultdict

copa_brasil = {
"Grêmio": ["1989", "1994", "1997", "2001", "2016"],
"Cruzeiro": ["1993", "1996", "2000", "2003", "2017", "2018"],
"Flamengo": ["1990", "2006", "2013", "2022"],
"Palmeiras": ["1998", "2012", "2015", "2020"],
"Corinthians": ["1995", "2002", "2009"],
"Atlético Mineiro": ["2014", "2021"],
"Athletico Paranaense": ["2019"]
}
brasileirao = {
"Palmeiras": ["1960", "1967", "1967", "1969", "1972", "1973", "1993", "1994", "2016", "2018", "2022", "2023"],
"Santos": ["1961", "1962", "1963", "1964", "1965", "1968", "2002", "2004"],
"Corinthians": ["1990", "1998", "1999", "2005", "2011", "2015", "2017"],
"São Paulo": ["1977", "1986", "1991", "2006", "2007", "2008"],
"Flamengo": ["1980", "1982", "1983", "1987", "1992", "2009", "2019", "2020"],
"Cruzeiro": ["1966", "2003", "2013", "2014"],
"Vasco": ["1974", "1989", "1997", "2000"],
"Atlético Mineiro": ["1971", "2021"],
}

supercopa = {
"Flamengo": ["2020", "2021"],
"Atlético Mineiro": ["2022"],
"Palmeiras": ["2023"]
}
def sequencias_consecutivas(anos_lista):
if not anos_lista:
return {}
anos_convertidos = sorted(anos_lista, key=lambda a: int(a))
sequencias = []
atual = [anos_convertidos[0]]

for i in range(1, len(anos_convertidos)):
atual_ano = int(anos_convertidos[i])
anterior_ano = int(anos_convertidos[i - 1])
if atual_ano == anterior_ano + 1:
atual.append(anos_convertidos[i])
else:
if len(atual) >= 2:
sequencias.append(list(atual))
atual = [anos_convertidos[i]]
if len(atual) >= 2:
sequencias.append(atual)

tipos = defaultdict(list)
for seq in sequencias:
tipos[len(seq)].append(seq)
return tipos

def contar_dobradinhas(clube):
anos_copa = set(copa_brasil.get(clube, []))
anos_bras = set(brasileirao.get(clube, []))
return sorted(anos_copa & anos_bras)

root = Tk()
root.geometry("900x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Títulos do Futebol Brasileiro")

Label(root, text="Campeões e títulos principais - Brasil",
font=("Arial", 22, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.1, rely=0.05)

# Combinação de todos os clubes
todos_clubes = set(copa_brasil) | set(brasileirao) | set(supercopa)
clubes_ordenados = sorted(todos_clubes)

var = StringVar()
dropdown = OptionMenu(root, var, *clubes_ordenados)
var.set(clubes_ordenados[0])
dropdown.place(relx=0.25, rely=0.15, relwidth=0.5)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 15, "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 12, "bold"))

scrollbar = Scrollbar(root)
scrollbar.place(relx=0.95, rely=0.4, relheight=0.55)

resultado_texto = Text(root, font=("Arial", 11), bg="#cfe2f3", yscrollcommand=scrollbar.set, wrap=WORD)
resultado_texto.place(relx=0.05, rely=0.4, relwidth=0.9, relheight=0.55)
scrollbar.config(command=resultado_texto.yview)

def limpar():
resultado_texto.delete(1.0, END)

def app():
clube = var.get()

anos_copa = copa_brasil.get(clube, [])
total_copa = len(anos_copa)

anos_bras = brasileirao.get(clube, [])
total_bras = len(anos_bras)

anos_super = supercopa.get(clube, [])
total_super = len(anos_super)

nomes = {2: "Bi", 3: "Tri", 4: "Tetra", 5: "Penta", 6: "Hexa", 7: "Hepta", 8: "Octa"}

texto = f"{clube}:\n"
texto += f"\nCopa do Brasil: {total_copa}"
texto += "\n - " + ", ".join(anos_copa) if anos_copa else "\n - Nenhum"
texto += "\nConquistas consecutivas na Copa:\n"
seq = sequencias_consecutivas(anos_copa)
if seq:
for k in sorted(seq):
nome = nomes.get(k, f"{k}-campeonatos")
texto += f"\n {nome} ({len(seq[k])}):"
for s in seq[k]:
texto += "\n - " + ", ".join(s)
else:
texto += "Nenhuma"
texto += f"\n\n Campeonato Brasileiro: {total_bras}"
texto += "\n - " + ", ".join(anos_bras) if anos_bras else "\n - Nenhum"
texto += "\nConquistas consecutivas na Liga:\n"
seq = sequencias_consecutivas(anos_bras)
if seq:
for k in sorted(seq):
nome = nomes.get(k, f"{k}-campeonatos")
texto += f"\n {nome} ({len(seq[k])}):"
for s in seq[k]:
texto += "\n - " + ", ".join(s)
else:
texto += "Nenhuma"

texto += f"\n\n Supercopa do Brasil: {total_super}"
texto += "\n - " + ", ".join(anos_super) if anos_super else "\n - Nenhum"
texto += "\nConquistas consecutivas na Supercopa:\n"
seq = sequencias_consecutivas(anos_super)
if seq:
for k in sorted(seq):
nome = nomes.get(k, f"{k}-campeonatos")
texto += f"\n {nome} ({len(seq[k])}):"
for s in seq[k]:
texto += "\n - " + ", ".join(s)
else:
texto += "Nenhuma"
dobradinhas = contar_dobradinhas(clube)
texto += f"\n\n Dobradinhas (Copa + Brasileirão): {len(dobradinhas)}"
if dobradinhas:
texto += "\n - " + ", ".join(dobradinhas)

resultado_texto.delete(1.0, END)
resultado_texto.insert(END, texto)

Button(root, text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app).place(relx=0.1, rely=0.3, relwidth=0.25, relheight=0.07)

Button(root, text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar).place(relx=0.4, rely=0.3, relwidth=0.25, relheight=0.07)

Button(root, text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy).place(relx=0.7, rely=0.3, relwidth=0.25, relheight=0.07)

root.mainloop()

Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação