Lotería con Python

La mejor forma de aprender a usar datos con python es haciendo un juego.

Lotería con Python
Jugando Lotería

La Lotería es un juego tradicional mexicano parecido al juego de Bingo.

En este juego, en lugar de números se sacan tarjetas con diferentes personajes u objetos como una campana, la muerte o un borracho.

Al inicio del juego se reparten cartas con pictogramas distribuidos de manera aleatoria. El jugador debe marcar lo que aparece en su carta. Gana el jugador que marca su carta completa.

Algunos conceptos importantes:

  • Mazo. Es el conjunto de todas las cartas individuales.
  • Carta. Cada carta tiene una imagen y su nombre. Por ejemplo: El valiente.
  • Tabla. Cada jugador tiene una tabla con 16 cartas aleatorias que debe de llenar conforme el gritón las menciona.
  • El gritón. Es la persona encargada de dar a conocer la siguiente carta a todos los jugadores.

Para comenzar, invocamos los módulos.

import pandas as pd
import random

Con pandas ahora tienes el poder de crear y manipular bases de datos.

Con pandas puedes cargar datos desde archivos csv o Excel, visualizarlo, quitar filas, cambiar columnas y hacer lo que sea con tus datos. Como nuestro proyecto es una lotería, vamos a necesitar números aleatorios, que son la especialidad del módulo random.

Comencemos a incluir las cartas en una lista.

cartas = ["La maceta", "El borracho", "La campana", "El catrin", "El violoncello","La sandia", "La chalupa", "El gorrito", "El arpa", "El camaron", "El barril", "La dama", "La bota", "El pajaro", "El melon", "El cotorro", "La palma", "El mundo", "El apache", "El pescado", "La muerte", "El alacran", "El gallo", "La calavera"]

Los conocedores de la lotería se podrán dar cuenta de que me faltó poner algunas cartas.

No es problema. Podemos incluír las cartas que nos faltan más adelante. Usemos la función append() para agregar la carte de "El diablito" a nuestro mazo de cartas. También podemos usar extend() para agregar más elementos al mazo desde otra lista.

# Con append podemos agregar un elemento adicional que nos faltaba
cartas.append("El diablito")
# Con extend podemos agregar los elementos de una lista a otra
cartas.extend(["El valiente", "La corona", "El barril"])
# Con print() mostramos 
print(cartas)

Con esta lista ya podemos repartir las tablas.

Una tabla de lotería tiene 16 cartas: cuatro a lo ancho y cuatro a lo largo. Usa pandas para crear un DataFrame para la tabla de cada jugador. Este DataFrame tendrá 16 cartas únicas del mazo y una columna adicional para marcar las cartas.

deck_df = pd.DataFrame(cartas, columns=['Carta'])
def crear_tabla(deck_df):
    tabla = deck_df.sample(16).reset_index(drop=True)
    tabla['Marcada'] = False  # Add a new column for marking the cards
    return tabla

# Example of creating a table for a player
tabla_jugador = crear_tabla(deck_df)
print("Tabla del Jugador:")
print(tabla_jugador)

Esta función crear_tabla toma la lista de cartas y utiliza random.sample para seleccionar 16 cartas únicas de esa lista. random.sample es útil porque automáticamente se asegura de que no haya duplicados en la selección.

¡Genial! Te has registrado exitosamente.

¡Bienvenido de vuelta! Has iniciado sesión correctamente.

Te has suscrito correctamente a Escribe tu primer paper de Economía.

¡Éxito! Revisa tu correo electrónico para obtener el enlace mágico para iniciar sesión.

¡Éxito! Se ha actualizado la información de facturación.

No se actualizó tu información de facturación.

Sígueme en Mastodon