Mundo em Python

Calcular Body Fat

import math
from tkinter import * root = Tk()
root.geometry("700x650")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calcular Body Fat") titulo = Label(text="Calcular Body Fat ",
font=("Arial", "28", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.25, rely=0.05) var = StringVar() # Botões de gênero
radio_masculino = Radiobutton(text="Masculino", variable=var, value="Masculino", font=("Arial", "15", "bold"))
radio_feminino = Radiobutton(text="Feminino", variable=var, value="Feminino", font=("Arial", "15", "bold"))
radio_masculino.place(relx=0.15, rely=0.15)
radio_feminino.place(relx=0.6, rely=0.15) # Labels para as entradas de dados
texto_sub1 = Label(text="Altura em cm:", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.38, rely=0.25) texto_sub2 = Label(text="Circunferência do pescoço em cm:", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.05, rely=0.35) texto_sub3 = Label(text="Circunferência do quadril em cm:", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub3.place(relx=0.05, rely=0.45) texto_sub4 = Label(text="Circunferência do cintura em cm:", font=("Arial", "18", "bold"), bg="#103030", fg="#49e3e3")
texto_sub4.place(relx=0.05, rely=0.55) # Entradas de dados
altura = StringVar()
altura_entrada = Entry(textvariable=altura, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
altura_entrada.place(relx=0.65, rely=0.25, relwidth=0.3) pescoço = StringVar()
pescoço_entrada = Entry(textvariable=pescoço, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
pescoço_entrada.place(relx=0.65, rely=0.35, relwidth=0.3) quadril = StringVar()
quadril_entrada = Entry(textvariable=quadril, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
quadril_entrada.place(relx=0.65, rely=0.45, relwidth=0.3) cintura = StringVar()
cintura_entrada = Entry(textvariable=cintura, font=("Arial", "12", "bold"), bg="white", fg="blue", justify='center')
cintura_entrada.place(relx=0.65, rely=0.55, relwidth=0.3)
# Função para limpar os campos
def limpar():
pescoço_entrada.delete(0, END)
altura_entrada.delete(0, END)
quadril_entrada.delete(0, END)
cintura_entrada.delete(0, END)
resultado_texto.config(text="")
# Função para calcular a gordura corporal
def app():
try:
v = var.get() # Gênero selecionado
a = int(altura.get()) # Altura
c = int(cintura.get()) # Circunferência da cintura
q = int(quadril.get()) # Circunferência do quadril
p = int(pescoço.get()) # Circunferência do pescoço

# Validação dos dados de entrada
if c <= p:
mensagem = "Erro: A circunferência da cintura deve ser maior que a do pescoço."
elif v == "Feminino" and (c + q <= p):
mensagem = "Erro: A soma da cintura e quadril deve ser maior que a do pescoço."
else:
# Cálculo da gordura corporal com base no gênero
if v == "Masculino":
gordura_corporal = (86.010 * math.log10(c - p)
- 70.041 * math.log10(a)
+ 36.76)
elif v == "Feminino":
gordura_corporal = (163.205 * math.log10(c + q - p)
- 97.684 * math.log10(a)
- 78.387)
else:
mensagem = "Erro: Por favor, selecione um gênero."
resultado_texto.config(text=mensagem)
return

# Classificação do nível de gordura corporal
if gordura_corporal < 6:
mensagem = "Você está com níveis extremamente baixos de gordura corporal."
elif gordura_corporal < 24:
mensagem = "Você está dentro da faixa saudável de gordura corporal."
elif gordura_corporal < 30:
mensagem = "Você está com gordura corporal acima do saudável, mas não obeso."
else:
mensagem = "Você está com obesidade, procure orientação médica."

resultado_texto.config(text=mensagem) except ValueError:
resultado_texto.config(text="Valor digitado inválido!")
# Botões
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), 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(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