Bucle while - Soluciones (1)

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

Bucle while (1) - 1

import random


def main():
    print("NÚMERO MAYOR")
    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}.")


if __name__ == "__main__":
    main()

Bucle while (1) - 2

import random


def main():
    print("NÚMEROS MAYORES")
    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}.")


if __name__ == "__main__":
    main()

Bucle while (1) - 3

import random


def main():
    print("CADA VEZ MÁS GRANDES")
    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}.")


if __name__ == "__main__":
    main()

Bucle while (1) - 4

import random


def main():
    print("NÚMEROS POSITIVOS")
    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.")


if __name__ == "__main__":
    main()

Bucle while (1) - 5

import random


def main():
    print("SUMA DE NÚMEROS")
    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}.")


if __name__ == "__main__":
    main()

Bucle while (1) - 6

import random


def main():
    print("HASTA EL LÍMITE")
    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: "))

    print()
    numero = float(input("Escriba un número: "))
    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 introducidos es {suma}.")


if __name__ == "__main__":
    main()

Bucle while (1) - 7

import random


def main():
    print("ENTRE DOS VALORES")
    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 and 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}.")


if __name__ == "__main__":
    main()

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

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

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()

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)