Bucle while - Soluciones (2)

Se ofrecen a continuación unas posibles soluciones de los ejercicios (2) de bucle while.

A. Juego de los veinte

Bucle while (2) - A-1

import random


def main():
    print("LOS 20 (1)")
    seguir = input("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: ")
    while seguir == "":
        tirada = random.randrange(1, 6)
        print(f"Tirada: {tirada}")
        print()
        seguir = input("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: ")

    print("Programa terminado.")


if __name__ == "__main__":
    main()

Bucle while (2) - A-2

import random


def main():
    print("LOS 20 (2)")
    seguir = input("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: ")
    suma = 0
    while seguir == "":
        tirada = random.randrange(1, 6)
        suma += tirada
        print(f"Tirada: {tirada} - Suma: {suma}")
        print()
        seguir = input("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: ")

    print("Programa terminado.")


if __name__ == "__main__":
    main()

Bucle while (2) - A-3

import random


def main():
    print("LOS 20 (3)")
    seguir = input(
        "Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: "
    )
    suma_1 = 0
    suma_2 = 0
    while seguir == "":
        tirada_1 = random.randrange(1, 6)
        suma_1 += tirada_1
        tirada_2 = random.randrange(1, 6)
        suma_2 += tirada_2
        print(f"Jugador 1: Tirada: {tirada_1} - Suma: {suma_1}")
        print(f"Jugador 2: Tirada: {tirada_2} - Suma: {suma_2}")
        print()
        seguir = input(
            "Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: "
        )

    if suma_1 + suma_2 == 0:
        print("No se ha lanzado ningún dado.")
    elif suma_1 > suma_2:
        print("Ha ganado el jugador 1.")
    elif suma_2 > suma_1:
        print("Ha ganado el jugador 2.")
    else:
        print("¡Empate!")


if __name__ == "__main__":
    main()

Bucle while (2) - A-4

import random


def main():
    print("LOS 20 (4)")
    print("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: ")
    print()

    suma_1 = 0
    suma_2 = 0

    tirar_1 = input("Jugador 1: ")
    if tirar_1 == "":
        sigue_1 = True
    else:
        sigue_1 = False

    tirar_2 = input("Jugador 2: ")
    if tirar_2 == "":
        sigue_2 = True
    else:
        sigue_2 = False

    while sigue_1 or sigue_2:
        if sigue_1:
            tirada_1 = random.randrange(1, 6)
            suma_1 += tirada_1
            print(f"Jugador 1 - Tirada: {tirada_1} - Suma: {suma_1}")
        else:
            print(f"Jugador 1 - Suma: {suma_1}")

        if sigue_2:
            tirada_2 = random.randrange(1, 6)
            suma_2 += tirada_2
            print(f"Jugador 2 - Tirada: {tirada_2} - Suma: {suma_2}")
        else:
            print(f"Jugador 2 - Suma: {suma_2}")

        print()
        if sigue_1:
            tirar_1 = input("Jugador 1: ")
            if tirar_1 == "":
                sigue_1 = True
            else:
                sigue_1 = False

        if sigue_2:
            tirar_2 = input("Jugador 2: ")
            if tirar_2 == "":
                sigue_2 = True
            else:
                sigue_2 = False

    print()
    print(f"Jugador 1 - Suma: {suma_1}")
    print(f"Jugador 2 - Suma: {suma_2}")
    print("Programa terminado.")


if __name__ == "__main__":
    main()

Bucle while (2) - A-5

import random


def main():
    print("LOS 20 (5)")
    print("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar: ")
    print()

    suma_1 = 0
    suma_2 = 0

    tirar_1 = input("Jugador 1: ")
    if tirar_1 == "":
        sigue_1 = True
    else:
        sigue_1 = False

    tirar_2 = input("Jugador 2: ")
    if tirar_2 == "":
        sigue_2 = True
    else:
        sigue_2 = False

    while sigue_1 or sigue_2:
        if sigue_1:
            tirada_1 = random.randrange(1, 6)
            suma_1 += tirada_1
            print(f"Jugador 1 - Tirada: {tirada_1} - Suma: {suma_1}")
        else:
            print(f"Jugador 1 - Suma: {suma_1}")

        if sigue_2:
            tirada_2 = random.randrange(1, 6)
            suma_2 += tirada_2
            print(f"Jugador 2 - Tirada: {tirada_2} - Suma: {suma_2}")
        else:
            print(f"Jugador 2 - Suma: {suma_2}")

        print()
        if sigue_1:
            tirar_1 = input("Jugador 1: ")
            if tirar_1 == "":
                sigue_1 = True
            else:
                sigue_1 = False

        if sigue_2:
            tirar_2 = input("Jugador 2: ")
            if tirar_2 == "":
                sigue_2 = True
            else:
                sigue_2 = False

    print()
    print(f"Jugador 1 - Suma: {suma_1}")
    print(f"Jugador 2 - Suma: {suma_2}")

    if suma_1 > 20 and suma_2 > 20:
        print("¡Empate!")
    elif suma_2 > 20:
        print("Ha ganado el jugador 1.")
    elif suma_1 > 20:
        print("Ha ganado el jugador 2.")
    elif suma_1 > suma_2:
        print("Ha ganado el jugador 1.")
    elif suma_2 > suma_1:
        print("Ha ganado el jugador 2.")
    else:
        print("¡Empate!")


if __name__ == "__main__":
    main()

B. Tragaperras

Bucle while (2) - B-1

import random

seguir = ""

while seguir == "":
    tirada_1 = random.randrange(1, 6)
    tirada_2 = random.randrange(1, 6)
    tirada_3 = random.randrange(1, 6)

    print(f"Tirada: {tirada_1} {tirada_2} {tirada_3}")

    seguir = input("Pulse Intro para volver a jugar, otra tecla e Intro para terminar: ")
    print()

print("Programa terminado.")

Bucle while (2) - B-2

import random

seguir = ""

while seguir == "":
    n_1 = random.randrange(1, 6)
    n_2 = random.randrange(1, 6)
    n_3 = random.randrange(1, 6)

    print(f"Tirada: {n_1} {n_2} {n_3}")

    if n_1 == n_2 == n_3:
        print("Hay tres números iguales")
    elif n_1 == n_2 or n_1 ==n_3 or n_2 == n_3:
        print("Hay dos números iguales")
    else:
        print("No hay números iguales")

    seguir = input("Pulse Intro para volver a jugar, otra tecla e Intro para terminar: ")
    print()

print("Programa terminado.")

Bucle while (2) - B-3

import random

monedas = 1

print("Empieza la partida con 1 moneda.")
print()

seguir = ""
while seguir == "":
    n_1 = random.randrange(1, 7)
    n_2 = random.randrange(1, 7)
    n_3 = random.randrange(1, 7)

    print(f"Tirada: {n_1} {n_2} {n_3}")

    if n_1 == n_2 == n_3:
        monedas += 4
        print(f"Ha ganado 5 monedas. Ahora tiene {monedas} moneda(s).")
    elif n_1 == n_2 or n_1 ==n_3 or n_2 == n_3:
        monedas += 1
        print(f"Ha ganado 2 monedas. Ahora tiene {monedas} moneda(s).")
    else:
        monedas -= 1
        print(f"No ha ganado nada. Ahora tiene {monedas} moneda(s).")

    seguir = input("Pulse Intro para volver a jugar, otra tecla e Intro para terminar: ")
    print()

print("Programa terminado.")

Bucle while (2) - B-4

import random

print("TRAGAPERRAS")
print("En cada tirada, se le cobrará una moneda.")
monedas = int(input("¿Con cuántas monedas quiere empezar? "))
while monedas < 1:
    print("Debe empezar con al menos 1 moneda")
    monedas = int(input("¿Con cuántas monedas quiere empezar? "))
inicial = monedas

print()
print(f"Empieza la partida con {monedas} moneda(s).")
print()

seguir = ""
while seguir == "" and monedas != 0:
    n_1 = random.randrange(1, 7)
    n_2 = random.randrange(1, 7)
    n_3 = random.randrange(1, 7)

    print(f"Tirada: {n_1} {n_2} {n_3}")

    if n_1 == n_2 == n_3:
        monedas += 4
        print(f"Ha ganado 5 monedas. Ahora tiene {monedas} moneda(s).")
    elif n_1 == n_2 or n_1 ==n_3 or n_2 == n_3:
        monedas += 1
        print(f"Ha ganado 2 monedas. Ahora tiene {monedas} moneda(s).")
    else:
        monedas -= 1
        print(f"No ha ganado nada. Ahora tiene {monedas} moneda(s).")

    if monedas > 0:
        seguir = input("Pulse Intro para volver a jugar, otra tecla e Intro para terminar: ")
    print()

print(f"Ha acabado la partida con {monedas} moneda(s).")
if monedas > inicial:
    print(f"Ha ganado {monedas - inicial} moneda(s).")
elif monedas < inicial:
    print(f"Ha perdido {inicial - monedas} moneda(s).")
else:
    print("No ha perdido ni ganado monedas.")
print("Programa terminado.")

C. Operaciones

Bucle while (2) - C-1

import random


def main():
    print("OPERACIONES (1)")
    print("Escriba el resultado de las siguientes operaciones:")

    correctas = 0

    while correctas < 5:
        a = random.randrange(1, 101)
        b = random.randrange(1, 101)
        respuesta = int(input(f"{a} + {b} = "))
        if respuesta == a + b:
            correctas += 1
            print("¡Respuesta correcta!")
        else:
            print("¡Respuesta incorrecta!")
        print()

    print("Programa terminado.")


if __name__ == "__main__":
    main()

Bucle while (2) - C-2

import random


def main():
    print("OPERACIONES (2)")
    cantidad = int(
        input(
            "¿Cuántas operaciones correctas debe contestar para terminar el programa? "
        )
    )

    while cantidad < 1:
        print("El número de operaciones debe ser mayor que cero.")
        cantidad = input(
            "¿Cuántas operaciones correctas debe contestar para terminar el programa? "
        )
    print()

    print("Escriba el resultado de las siguientes operaciones:")

    correctas = 0
    total = 0

    while correctas < cantidad:
        a = random.randrange(1, 101)
        b = random.randrange(1, 101)
        respuesta = int(input(f"{a} + {b} = "))
        total += 1
        if respuesta == a + b:
            correctas += 1
            print("¡Respuesta correcta!")
        else:
            print("¡Respuesta incorrecta!")
        print()

    if cantidad == 1 and total == 1:
        print(f"Ha acertado 1 operación en 1 intento.")
    elif cantidad == 1:
        print(f"Ha acertado 1 operación en {total} intentos.")
    else:
        print(f"Ha acertado {correctas} operaciones en {total} intentos.")

    print("Programa terminado.")


if __name__ == "__main__":
    main()

Bucle while (2) - C-3

import random
import time


def main():
    print("OPERACIONES (3)")
    cantidad = int(
        input(
            "¿Cuántas operaciones correctas debe contestar para terminar el programa? "
        )
    )

    while cantidad < 1:
        print("El número de operaciones debe ser mayor que cero.")
        cantidad = int(
            input(
                "¿Cuántas operaciones correctas debe contestar para terminar el programa? "
            )
        )
    print()

    print("Escriba el resultado de las siguientes operaciones:")

    correctas = 0
    total = 0
    inicio = time.time()

    while correctas < cantidad:
        a = random.randrange(1, 101)
        b = random.randrange(1, 101)
        respuesta = int(input(f"{a} + {b} = "))
        total += 1
        if respuesta == a + b:
            correctas += 1
            print("¡Respuesta correcta!")
        else:
            print("¡Respuesta incorrecta!")
        print()

    final = time.time()

    print(f"Ha tardado {round(final - inicio, 1)} segundos en ", end="")

    if cantidad == 1:
        print("acertar 1 operación ", end="")
    else:
        print(f"acertar {correctas} operaciones ", end="")

    if total == 1:
        print("en 1 intento.")
    else:
        print(f"en {total} intentos.")

    print("Programa terminado.")


if __name__ == "__main__":
    main()

Bucle while (2) - C-4

import random
from time import time

cantidad = int(input("¿Cuántas operaciones correctas debe contestar para terminar el programa? "))

while cantidad < 1:
    print("El número de operaciones debe ser mayor que cero")
    cantidad = input("¿Cuántas operaciones correctas debe contestar para terminar el programa? ")
print()

seguir = "S"
minimo = float("inf")

while seguir == "S" or seguir == "s":
    print("Escriba el resultado de las siguientes operaciones")

    correctas = 0
    total = 0
    inicio = time()

    while correctas < cantidad:
        a = random.randrange(1, 101)
        b = random.randrange(1, 101)
        respuesta = int(input(f"{a} + {b}: "))
        total += 1
        if respuesta == a + b:
            correctas += 1
            print("¡Respuesta correcta!")
        else:
            print("¡Respuesta incorrecta!")
        print()

    final = time()
    tiempo = round(final - inicio, 1)
    if tiempo < minimo:
        minimo = tiempo

    print(f"Ha tardado {tiempo} segundos en ", end="")

    if cantidad == 1:
        print("acertar 1 operación ", end="")
    else:
        print(f"acertar {correctas} operaciones ", end="")

    if total == 1:
        print("en 1 intento.")
    else:
        print(f"en {total} intentos.")

    seguir = input("¿Quiere probar otra vez? (S/N): ")

print()
print(f"Su tiempo mínimo ha sido {minimo} segundos.")
print("Programa terminado.")

D. Adivinar números

En construcciónPor escribir