eleccionesprode / app.py
Lukeetah's picture
Upload app.py
31c27d6
raw
history blame
4.36 kB
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()