Saltar a contenido

Ejercitación aplicada
Aleatoriedad con el módulo random

  1. Escribe un programa que simule el lanzamiento de una moneda. Esta moneda, que posee 2 lados, permite traernos el concepto de probabilidad: 50% de posibilidades de que salga cara y 50% de que salga cruz. Aunque esta probabilidad es teórica, en la práctica, la moneda puede caer de cualquier lado, haciendo que las chances de 50 y 50 no sean exactas, en los sucesivos lanzamientos.

    Para ello, utiliza la función random.choice() para seleccionar entre las opciones "cara" y "cruz". Imprime el resultado en pantalla.

    Haz clic aquí para ver la solución propuesta

    La implementación práctica de la función random.choice() en Python nos permite comprender varios conceptos fundamentales de la programación.

    Analicemos paso a paso cómo podemos simular el lanzamiento de una moneda, lo que nos ayudará a entender mejor la sintaxis y estructura del código.

    El primer paso crucial es la importación del módulo:

    Importación del módulo random
    import random
    

    Esta instrucción debe ubicarse al inicio de nuestro programa, actuando como una declaración que le indica a Python que necesitaremos acceder a las funcionalidades del módulo random. Es similar a cuando abrimos un libro de referencia antes de comenzar a trabajar: necesitamos tenerlo disponible antes de poder utilizarlo.

    Para simular el lanzamiento de una moneda, necesitamos crear una lista que represente los posibles resultados:

    Creación de la lista de opciones
    lanzamiento = random.choice(["cara", "cruz"])
    

    Analicemos los componentes de esta instrucción:

    • Los corchetes [ ] crean una lista, que es una estructura de datos que puede contener múltiples elementos
    • Las cadenas "cara" y "cruz" son elementos individuales de la lista, separados por una coma
    • Las comillas (ya sean simples o dobles) indican que estamos trabajando con cadenas de texto
    • random.choice() es la función que seleccionará aleatoriamente uno de estos elementos
    • Los paréntesis ( ) después de 'choice' contienen el argumento que pasamos a la función, en este caso, nuestra lista

    La notación random.choice utiliza el punto (.) como un operador de acceso, similar a la forma en que podríamos referirnos a un capítulo específico de un libro: "libro.capítulo". Esto le indica a Python que queremos usar la función choice que se encuentra dentro del módulo random.

    Nuestro programa completo se vería así:

    Programa completo
    1
    2
    3
    4
    import random
    
    lanzamiento = random.choice(["cara", "cruz"])
    print(lanzamiento)
    

    Al ejecutar este programa, obtendremos un resultado aleatorio entre "cara" y "cruz", lo que simula efectivamente el lanzamiento de una moneda.

    Terminal (Entrada/Salida)
    cara
    

    En este caso, el resultado fue "cara", pero si se ejecuta nuevamente, podría ser "cruz"... o "cara" nuevamente. La aleatoriedad inherente de la función random.choice() nos permite simular un lanzamiento de moneda realista y emocionante. Si ejecutáramos nuestro programa una cantidad infinita de veces, el resultado sería 50/50 o estaría muy cerca. Pero si solo lo ejecutáramos un par de veces, tal vez la proporción no sería tan clara. Es que son solo probabilidades.

    En este ejercicio tratamos con las opciones "cara" y "cruz", pero podríamos personalizar nuestra lista según nuestras necesidades. Por ejemplo:

    Personalización de la lista
    # Versión en español
    resultados_espanol = random.choice(["cara", "cruz"])
    
    # Versión en inglés
    resultados_ingles = random.choice(["heads", "tails"])
    
    # Versión con números
    resultados_numericos = random.choice([1, 2])
    

    La flexibilidad de esta función nos permite trabajar con cualquier tipo de secuencia, siempre que mantengamos la sintaxis correcta de la lista y respetemos la estructura de los elementos que queremos incluir en ella. Esta versatilidad hace que random.choice() sea una herramienta poderosa para cualquier situación donde necesitemos selección aleatoria en nuestros programas.


  2. Escribe un programa que contenga una lista de 5 personas. El programa deberá seleccionar aleatoriamente una persona de la lista e imprimir su nombre.


  3. Escribe un programa que simule la generación de datos de prueba aleatorios para un sistema de selección aleatoria de un juego. El programa deberá seleccionar aleatoriamente un número entre 1 y 100 y mostrarlo en pantalla.


  4. Escribe un programa que simule el lanzamiento de un dado. Un dado tiene 6 caras, numeradas del 1 al 6. Utiliza la función random.randint() para seleccionar un número aleatorio entre 1 y 6. Imprime el resultado en pantalla.


  5. Escribe un programa que simule un juego de adivinanza de números. El programa deberá seleccionar aleatoriamente un número entre 1 y 5 y solicitar al usuario que adivine cuál es. Si el usuario adivina correctamente, el programa deberá imprimir un mensaje de felicitaciones. Si el usuario no adivina, el programa deberá imprimir un mensaje de ánimo y mostrar el número correcto.


  6. Escribe un programa que genere un problema matemático aleatorio para que el usuario lo resuelva.

    El programa deberá seleccionar aleatoriamente dos números entre 1 y 10 y un operador matemático (+, -, *, /).

    El programa deberá mostrar el problema al usuario y solicitarle que ingrese la respuesta.

    Si el usuario responde correctamente, el programa deberá imprimir un mensaje de felicitaciones. Si el usuario responde incorrectamente, el programa deberá imprimir un mensaje de ánimo y mostrar la respuesta correcta.


  7. En una baraja real, cada palo tiene cartas numeradas del 2 al 10, más las figuras (JACK, QUEEN, KING) y el AS.

    Escribe un programa que mezcle las cartas y que luego le pregunte al usuario en qué posición se encuentra una carta específica.

    El programa deberá seleccionar aleatoriamente una carta de la baraja y mostrarla al usuario.

    Luego, el programa deberá solicitar al usuario que ingrese la posición de la carta en la baraja.

    Si el usuario adivina correctamente, el programa deberá imprimir un mensaje de felicitaciones. Si el usuario no adivina, el programa deberá imprimir un mensaje de ánimo y mostrar la carta correcta.

    Puedes tomar este fragmento de código como punto de partida y completarlo con la lógica necesaria. Analízalo porque en varias líneas de código parece no estar completo o tener errores:

    Juego de cartas
    import
    
    # Creamos una lista con todas las cartas de un palo
    # Primero las cartas numeradas, luego las figuras
    cartas = "2", "3", "4", "5", "6", "7", "8", "9", "10", "JACK", "QUEEN", "KING", "AS"
    
    # Mezclamos todas las cartas
    print("\n¡Mezclando las cartas!\n")
    cartas = random.(cartas)
    
    # El programa elige una carta al azar
    carta_a_adivinar = random.(cartas)
    print(f"¿En qué posición crees que quedó la carta {carta_a_adivinar}?")
    
    # El programa le pide al usuario que adivine la posición de la carta
    while :
        try:
            respuesta = str(input("Ingresa un número del 1 al 13: "))
            if respuesta < 1 or respuesta > 13:
                print("Por favor, ingresa un número del 1 al 13.")
            else:
                
        except ValueError:
            print("El dato ingresado no es válido.")
    
    # Obtenemos la posición real de la carta a adivinar        
    posicion_real = cartas.index(carta_a_adivinar) + 1
    
    # Mostramos como quedó el mazo de cartas mezcladas de forma más legible
    print("\nEl mazo ha quedado ordenado de la siguiente manera, desde la carta superior a la carta inferior:")
    for posicion, carta in enumerate(cartas, 1):
        if carta == carta_a_adivinar:
            print()
            if posicion_real == :
                print(f"Carta {posicion}: {carta}  --- ¡ADIVINASTE LA CARTA!")
            else:
                print(f"Carta {posicion}: {carta}  --- ESTA ERA LA CARTA A ADIVINAR")
            print()
        else:
            print(f"Carta {posicion}: {carta}")
    
    if respuesta == posicion_real:
        print("\n¡Increíble! ¡Adivinaste!")
    else:
        print(f"\nCasi! La carta {carta_a_adivinar} estaba en la posición {posicion_real} y no en la posición {respuesta}.")
    
    Haz clic aquí para ver la solución propuesta
    Juego de cartas
    import random
    
    # Creamos una lista con todas las cartas de un palo
    # Primero las cartas numeradas, luego las figuras
    cartas = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "JACK", "QUEEN", "KING", "AS"]
    
    # Mezclamos todas las cartas
    print("\n¡Mezclando las cartas!\n")
    random.shuffle(cartas)
    
    # El programa elige una carta al azar
    carta_a_adivinar = random.choice(cartas)
    print(f"¿En qué posición crees que quedó la carta {carta_a_adivinar}?")
    
    # El programa le pide al usuario que adivine la posición de la carta
    while True:
        try:
            respuesta = int(input("Ingresa un número del 1 al 13: "))
            if respuesta < 1 or respuesta > 13:
                print("Por favor, ingresa un número del 1 al 13.")
            else:
                break
        except ValueError:
            print("El dato ingresado no es válido.")
    
    # Obtenemos la posición real de la carta a adivinar        
    posicion_real = cartas.index(carta_a_adivinar) + 1
    
    # Mostramos como quedó el mazo de cartas mezcladas de forma más legible
    print("\nEl mazo ha quedado ordenado de la siguiente manera, desde la carta superior a la carta inferior:")
    for posicion, carta in enumerate(cartas, 1):
        if carta == carta_a_adivinar:
            print()
            if posicion_real == respuesta:
                print(f"Carta {posicion}: {carta}  --- ¡ADIVINASTE LA CARTA!")
            else:
                print(f"Carta {posicion}: {carta}  --- ESTA ERA LA CARTA A ADIVINAR")
            print()
        else:
            print(f"Carta {posicion}: {carta}")
    
    if respuesta == posicion_real:
        print("\n¡Increíble! ¡Adivinaste!")
    else:
        print(f"\nCasi! La carta {carta_a_adivinar} estaba en la posición {posicion_real} y no en la posición {respuesta}.")
    

    Este ejercicio nos muestra cómo podemos combinar diferentes conceptos que hemos aprendido: listas, entrada de usuario, condicionales y, por supuesto, la función shuffle() para crear algo divertido e interactivo.

    ¿Te animas a pensar en otras formas de usar estas cartas mezcladas para crear juegos diferentes?