Bucle while - Soluciones (2)

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


A. Juego de las siete y media

Bucle while (2) - A-1

from random import randrange

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

print("Programa terminado.")

Bucle while (2) - A-2

from random import randrange

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

print("Programa terminado.")

Bucle while (2) - A-3

from random import randrange

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 = randrange(1, 6)
    suma_1 += tirada_1
    tirada_2 = randrange(1, 6)
    suma_2 += tirada_2
    print()
    print(f"Jugador 1 - Tirada: {tirada_1} - Suma: {suma_1}")
    print(f"Jugador 2 - Tirada: {tirada_2} - Suma: {suma_2}")
    seguir = input("Pulse Intro para lanzar el dado. Pulse otra tecla e Intro para terminar. ")

print()
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!")

print("Programa terminado.")

Bucle while (2) - A-4

from random import randrange

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 = 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 = 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 > suma_2:
    print("Ha ganado el jugador 1.")
elif suma_2 > suma_1:
    print("Ha ganado el jugador 2.")
else:
    print("¡Empate!")

print("Programa terminado.")

Bucle while (2) - A-5

from random import randrange

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 = 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 = 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}")
tope = 20
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!")

print("Programa terminado.")

B. Tragaperras

Bucle while (2) - B-1

from random import randrange

seguir = ""

while seguir == "":
    tirada_1 = randrange(1, 6)
    tirada_2 = randrange(1, 6)
    tirada_3 = 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

from random import randrange

seguir = ""

while seguir == "":
    n_1 = randrange(1, 6)
    n_2 = randrange(1, 6)
    n_3 = 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

from random import randrange

monedas = 1

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

seguir = ""
while seguir == "":
    n_1 = randrange(1, 7)
    n_2 = randrange(1, 7)
    n_3 = 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

from random import randrange

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 = randrange(1, 7)
    n_2 = randrange(1, 7)
    n_3 = 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

from random import randrange

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

correctas = 0

while correctas < 5:
    a = randrange(1, 101)
    b = 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.")

Bucle while (2) - C-2

from random import randrange

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 = randrange(1, 101)
    b = 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.")

Bucle while (2) - C-3

from random import randrange
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()

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

correctas = 0
total = 0
inicio = time()

while correctas < cantidad:
    a = randrange(1, 101)
    b = 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()

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.")

Bucle while (2) - C-4

from random import randrange
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 = randrange(1, 101)
        b = 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