Bucle while - Soluciones (1)

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

Bucle while (1) - 1

primero = int(input("Escriba un número: "))
segundo = int(input(f"Escriba un número mayor que {primero}: "))

while segundo <= primero:
    segundo = int(input(f"{segundo} no es mayor que {primero}. Inténtelo de nuevo: "))

print()
print(f"Los números que ha escrito son {primero} y {segundo}.")
print("Programa terminado")

Bucle while (1) - 2

primero = float(input("Escriba un número: "))
segundo = float(input(f"Escriba un número mayor que {primero}: "))

while segundo > primero:
    segundo = float(input(f"Escriba un número mayor que {primero}: "))

print()
print(f"{segundo} no es mayor que {primero}.")
print("Programa terminado")

Bucle while (1) - 3

primero = int(input("Escriba un número: "))
segundo = int(input(f"Escriba un número mayor que {primero}: "))

while segundo > primero:
    primero = segundo
    segundo = int(input(f"Escriba un número mayor que {primero}: "))

print()
print(f"{segundo} no es mayor que {primero}.")
print("Programa terminado")

Bucle while (1) - 4

objetivo = int(input("Escriba la cantidad de números positivos a escribir: "))
while objetivo < 1:
    objetivo = int(input("La cantidad debe ser mayor que 0. Inténtelo de nuevo: "))

print()
numero = int(input("Escriba un número: "))
total = 1
if numero > 0:
    cantidad = 1
else:
    cantidad = 0

while cantidad < objetivo:
    numero = int(input("Escriba otro número: "))
    if numero > 0:
        cantidad += 1
    total += 1

print()
if total == 1:
    print("Ha escrito 1 número positivo.")
elif objetivo == 1:
    print(f"Ha escrito {total} números, {objetivo} de ellos positivo.")
else:
    print(f"Ha escrito {total} números, {objetivo} de ellos positivos.")
print("Programa terminado")

Bucle while (1) - 5

numero = int(input("Escriba un número: "))
suma = 0

while numero >= 0:
    suma += numero
    numero = int(input("Escriba otro número: "))

print()
print(f"La suma de los números positivos introducidos es {suma}.")
print("Programa terminado")

Bucle while (1) - 6

limite = float(input("Escriba el valor límite: "))
while limite <= 0:
    limite = float(input("El límite debe ser mayor que 0. Inténtelo de nuevo: "))

numero = float(input("Escriba un número: "))
suma = 0
suma += numero

while suma < limite:
    numero = float(input("Escriba otro número: "))
    suma += numero

print()
print(f"Ha superado el límite. La suma de los números positivos introducidos es {suma}.")
print("Programa terminado")

Bucle while (1) - 7

minimo = int(input("Escriba un número: "))
maximo = int(input(f"Escriba un número mayor que {minimo}: "))
while minimo >= maximo:
    maximo = int(input(f"{maximo} no es mayor que {minimo}. Inténtelo de nuevo: "))

numero = float(input(f"Escriba un número entre {minimo} y {maximo}: "))
contador = 0

while minimo <= numero <= maximo:
    contador += 1
    numero = float(input(f"Escriba otro número entre {minimo} y {maximo}: "))

print()
if contador == 0:
    print(f"No ha escrito ningún número entre {minimo} y {maximo}.")
elif contador == 1:
    print(f"Ha escrito 1 número entre {minimo} y {maximo}.")
else:
    print(f"Ha escrito {contador} números entre {minimo} y {maximo}.")
print("Programa terminado")

Bucle while (1) - 8

numero = int(input("Escriba un número par: "))
while numero % 2 != 0:
    numero = int(input(f"{numero} no es un número par. Inténtelo de nuevo: "))
contador = 1
respuesta = input("¿Quiere escribir otro número par? (S/N): ")

while respuesta == "S" or respuesta == "s":
    numero = int(input("Escriba un número par: "))
    while numero % 2 != 0:
        numero = int(input(f"{numero} no es un número par. Inténtelo de nuevo: "))
    contador += 1
    respuesta = input("¿Quiere escribir otro número par? (S/N): ")

print()
if contador == 0:
    print("No ha escrito ningún número par")
elif contador == 1:
    print("Ha escrito 1 número par")
else:
    print(f"Ha escrito {contador} números pares.")
print("Programa terminado")

la versión que sólo acepta S, N, s o n por respuesta podría ser:

numero = int(input("Escriba un número par: "))
while numero % 2 != 0:
    numero = int(input(f"{numero} no es un número par. Inténtelo de nuevo: "))
contador = 1
respuesta = input("¿Quiere escribir otro número par? (S/N): ")
while respuesta != "S" and respuesta != "N" and respuesta != "s" and respuesta != "n":
    respuesta = input("¿Quiere escribir otro número par? (S/N): ")

while respuesta == "S" or respuesta == "s":
    numero = int(input("Escriba un número par: "))
    while numero % 2 != 0:
        numero = int(input(f"{numero} no es un número par. Inténtelo de nuevo: "))
    contador += 1
    respuesta = input("¿Quiere escribir otro número par? (S/N): ")
while respuesta != "S" and respuesta != "N" and respuesta != "s" and respuesta != "n":
    respuesta = input("¿Quiere escribir otro número par? (S/N): ")

print()
if contador == 0:
    print("No ha escrito ningún número par")
elif contador == 1:
    print("Ha escrito 1 número par")
else:
    print(f"Ha escrito {contador} números pares.")
print("Programa terminado")

Bucle while (1) - 9

Un algoritmo sencillo, pero poco eficiente, sería el siguiente:

numero = int(input("Escriba un número entero mayor que 1: "))
while numero <= 1:
    numero = int(input(f"{numero} no es mayor que 1. Inténtelo de nuevo: "))
copia = numero

print("Descomposición en factores primos: ", end="")
for i in range(2, numero + 1):
    while copia % i == 0:
        copia = copia // i
        print(i, end=" ")

print()
print("Programa terminado")

Una solución más complicada, pero mucho más rápida, sería la siguiente:

numero = int(input("Escriba un número entero mayor que 1: "))
while numero <= 1:
    numero = int(input(f"{numero} no es mayor que 1. Inténtelo de nuevo: "))
copia = numero

print("Descomposición en factores primos: ", end="")
i = 2
while copia > i:
    while copia % i == 0:
        copia = copia // i
        print(i, end=" ")
    i += 1
print(copia)

print()
print("Programa terminado")