Spaces:
Sleeping
Sleeping
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() |