Boa noite Estou tentando fazer um programa para calcular a massa molar de elementos estou tendo dificuldades ao obter o resultado quando o elemento e composto exemplo H2O OU H2O2. ALGUÉM PODERIA ME AJUDAR?
import tkinter as tk
from tkinter import messagebox
def calcular_massa_molar(composto):
massas = {
'H': 1.008,
'He': 4.0026,
'Li': 6.94,
'Be': 9.0122,
'B': 10.81,
'C': 12.011,
'N': 14.007,
'O': 15.999,
'F': 18.998,
'Ne': 20.180,
'Na': 22.990,
'Mg': 24.305,
'Al': 26.982,
'Si': 28.085,
'P': 30.974,
'S': 32.06,
'Cl': 35.45,
'Ar': 39.948,
'K': 39.098,
'Ca': 40.078,
}
massa_total = 0.0
i = 0
quantidade=0.0
masssaresult=0.0
while i < len(composto):
elemento = composto[i]
if elemento.isdecimal():
quantidade = float(elemento)*quantidade
print(quantidade,"Q")
if elemento.isalpha():
masssaresult=massas.get(elemento,i)
print(masssaresult, "2")
massa_total = masssaresult
#quantidade = int(composto[i + 1])
#i += 1
#quantidade = 1
# massa_total += massas.get(elemento, 0) * quantidade
if quantidade == 0:
print("total:", massa_total)
else:
massa_total = masssaresult*quantidade
print("total1:", massa_total)
i += 1
return massa_total
def calcular():
composto = entrada_composto.get()
if not composto:
messagebox.showerror("Erro", "Por favor, insira um composto químico.")
return
try:
massa_molar = calcular_massa_molar(composto)
print(massa_molar)
resultado_var.set(f"A massa molar de {composto} é {massa_molar:.2f} g/mol.")
except KeyError:
messagebox.showerror("Erro", "Composto contém elementos desconhecidos.")
except Exception as e:
messagebox.showerror("Erro", f"Ocorreu um erro: {e}")
background_color = "#2C3E50"
foreground_color = "#ECF0F1"
button_color = "#1ABC9C"
entry_color = "#34495E"
font_style = ("Arial", 12)
font_bold = ("Arial", 12, "bold")
janela = tk.Tk()
janela.title("Calculadora Estequiométrica Avançada")
janela.geometry("400x250")
janela.config(bg=background_color)
frame_top = tk.Frame(janela, bg=background_color)
frame_top.pack(pady=20)
titulo = tk.Label(frame_top, text="Calculadora Estequiométrica", font=("Arial", 16, "bold"), bg=background_color, fg=foreground_color)
titulo.pack()
instrucao = tk.Label(frame_top, text="Digite o composto químico (ex: H2O)", font=font_style, bg=background_color, fg=foreground_color)
instrucao.pack()
frame_middle = tk.Frame(janela, bg=background_color)
frame_middle.pack(pady=10)
entrada_composto = tk.Entry(frame_middle, width=25, font=font_style, bg=entry_color, fg=foreground_color, justify="center")
entrada_composto.grid(row=0, column=0, padx=10)
botao_calcular = tk.Button(frame_middle, text="Calcular", font=font_bold, bg=button_color, fg=foreground_color, command=calcular)
botao_calcular.grid(row=0, column=1)
frame_bottom = tk.Frame(janela, bg=background_color)
frame_bottom.pack(pady=20)
resultado_var = tk.StringVar()
resultado_label = tk.Label(frame_bottom, textvariable=resultado_var, font=font_style, bg=background_color, fg=foreground_color)
resultado_label.pack()
janela.mainloop()