import streamlit as st import sqlite3 # Lista de candidatos candidatos = [ "Javier Milei", "Patricia Bullrich", "Sergio Massa", "Juan Schiaretti", "Myriam Bregman", "Votos en blanco / impugnados" # Agregamos la opción de votos en blanco / impugnados ] # Conexión a la base de datos conn = sqlite3.connect('resultados.db') c = conn.cursor() # Crear tabla si no existe c.execute('''CREATE TABLE IF NOT EXISTS resultados (nombre text, milei real, bullrich real, massa real, schiaretti real, bregman real)''') # Obtener resultados anteriores c.execute('SELECT * FROM resultados') resultados_anteriores = c.fetchall() # Mostrar resultados anteriores for resultado in resultados_anteriores: st.write(f'Resultados anteriores de {resultado[0]}:') st.write(f'Javier Milei: {resultado[1]}%') st.write(f'Patricia Bullrich: {resultado[2]}%') st.write(f'Sergio Massa: {resultado[3]}%') st.write(f'Juan Schiaretti: {resultado[4]}%') st.write(f'Myriam Bregman: {resultado[5]}%') st.write('---') # Diccionario para almacenar las votaciones votaciones = {} # Porcentajes iniciales porcentajes_iniciales = {c: 16.67 for c in candidatos} # Distribución equitativa entre los 6 candidatos st.title("Elecciones Presidenciales 2023") # Asignar porcentajes iniciales a votantes que no hayan votado todavía for candidato,porcentaje in porcentajes_iniciales.items(): for votante in votaciones: if candidato not in votaciones[votante]: votaciones[votante][candidato] = porcentaje # Función para validar votante def validar_votante(nombre): return nombre not in votaciones # Sección principal nombre_votante = st.text_input("Ingrese su nombre") if nombre_votante: if validar_votante(nombre_votante): # Sección de votación porcentajes = {} total = 0 for candidato in candidatos: porcentaje = st.number_input(f"Porcentaje de votos para {candidato}", min_value=0, max_value=100) porcentajes[candidato] = porcentaje total += porcentaje if total == 100: confirmado = st.button("Votar") if confirmado: # Guardar resultados en la base de datos c.execute('INSERT INTO resultados VALUES (?, ?, ?, ?, ?, ?)', (nombre_votante, porcentajes["Javier Milei"], porcentajes["Patricia Bullrich"], porcentajes["Sergio Massa"], porcentajes["Juan Schiaretti"], porcentajes["Myriam Bregman"])) conn.commit() votaciones[nombre_votante] = porcentajes st.write(f"Gracias {nombre_votante}!") # Invisibilizar todo y mostrar resultados contenedor = st.empty() contenedor.write("Calculando resultados...") # Calcular porcentajes totales porcentajes_totales = {c:0 for c in candidatos} for votante,votos in votaciones.items(): for candidato,porcentaje in votos.items(): porcentajes_totales[candidato] += porcentaje # Mostrar resultados resultado = "" for votante,votos in votaciones.items(): resultado += f"{votante}: " for candidato,porcentaje in votos.items(): resultado += f"{candidato}: {porcentaje}%, " resultado = resultado[:-2] + "\n" resultado += "Resultados totales:\n" for candidato,porcentaje in porcentajes_totales.items(): resultado += f"{candidato}: {porcentaje}%\n" contenedor.write(resultado) else: st.write("Por favor confirme su votación") else: st.write("Los porcentajes deben sumar 100") else: st.write(f"Gracias {nombre_votante}, ya votaste") # Mostrar resultados if votaciones: st.write("Resultados actuales:") resultado = "" for votante,votos in votaciones.items(): resultado += f"{votante}: " for candidato,porcentaje in votos.items(): resultado += f"{candidato}: {porcentaje}%, " resultado = resultado[:-2] + "\n" st.write(resultado) # Cerrar conexión a la base de datos conn.close()