Untitled
unknown
python
2 years ago
3.5 kB
2
Indexable
#!/usr/local/bin/python # coding: latin-1 import tkinter as tk def calcular_ahorro(): ingresos = float(entrada_ingresos.get()) gastos_fijos = [float(valor.get()) for valor in entradas_gastos_fijos] gastos_variables = [float(valor.get()) for valor in entradas_gastos_variables] meta_ahorro = float(entrada_meta_ahorro.get()) total_gastos = sum(gastos_fijos) + sum(gastos_variables) presupuesto_disponible = ingresos - total_gastos if presupuesto_disponible < 0: resultado.config(text="¡Cuidado! Tus gastos superan tus ingresos.") else: dp = [0] * (int(presupuesto_disponible) + 1) for i in range(1, int(presupuesto_disponible) + 1): max_ahorro = 0 for j in range(len(gastos_variables)): if gastos_variables[j] <= i: ahorro_actual = dp[i - int(gastos_variables[j])] + int(gastos_variables[j]) if ahorro_actual > max_ahorro: max_ahorro = ahorro_actual dp[i] = max_ahorro if dp[int(presupuesto_disponible)] >= meta_ahorro: resultado.config(text="¡Felicidades! Has alcanzado tu meta de ahorro.") else: resultado.config(text="No has alcanzado tu meta de ahorro.") resultado_ahorro.config(text="El ahorro máximo alcanzado es: " + str(dp[int(presupuesto_disponible)])) ventana = tk.Tk() ventana.title("Control de Gastos Personales") etiqueta_ingresos = tk.Label(ventana, text="Ingresos:") etiqueta_ingresos.grid(row=0, column=0, padx=10, pady=10, sticky="w") entrada_ingresos = tk.Entry(ventana) entrada_ingresos.grid(row=0, column=1, padx=10, pady=10) etiqueta_gastos_fijos = tk.Label(ventana, text="Gastos Fijos:") etiqueta_gastos_fijos.grid(row=1, column=0, padx=10, pady=10, sticky="w") entradas_gastos_fijos = [] for i in range(5): etiqueta_gasto_fijo = tk.Label(ventana, text="Gasto fijo {}: ".format(i + 1)) etiqueta_gasto_fijo.grid(row=i + 2, column=0, padx=10, pady=10, sticky="w") entrada_gasto_fijo = tk.Entry(ventana) entrada_gasto_fijo.grid(row=i + 2, column=1, padx=10, pady=10) entradas_gastos_fijos.append(entrada_gasto_fijo) etiqueta_gastos_variables = tk.Label(ventana, text="Gastos Variables:") etiqueta_gastos_variables.grid(row=7, column=0, padx=10, pady=10, sticky="w") entradas_gastos_variables = [] for i in range(5): etiqueta_gasto_variable = tk.Label(ventana, text="Gasto variable {}: ".format(i + 1)) etiqueta_gasto_variable.grid(row=i + 8, column=0, padx=10, pady=10, sticky="w") entrada_gasto_variable = tk.Entry(ventana) entrada_gasto_variable.grid(row=i + 8, column=1, padx=10, pady=10) entradas_gastos_variables.append(entrada_gasto_variable) etiqueta_meta_ahorro = tk.Label(ventana, text="Meta de Ahorro:") etiqueta_meta_ahorro.grid(row=13, column=0, padx=10, pady=10, sticky="w") entrada_meta_ahorro = tk.Entry(ventana) entrada_meta_ahorro.grid(row=13, column=1, padx=10, pady=10) boton_calcular = tk.Button(ventana, text="Calcular Ahorro Máximo", command=calcular_ahorro) boton_calcular.grid(row=14, column=0, columnspan=2, padx=10, pady=10) resultado = tk.Label(ventana, text="") resultado.grid(row=15, column=0, columnspan=2, padx=10, pady=10) resultado_ahorro = tk.Label(ventana, text="") resultado_ahorro.grid(row=16, column=0, columnspan=2, padx=10, pady=10) ventana.mainloop()
Editor is loading...