Se ofrecen a continuación unas posibles soluciones de los ejercicios (2) de bucle while.
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()
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()
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()
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()
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()
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()
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: "))
print()
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()
def main():
print("CUENTA PARES (1)")
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 == 1:
print("Ha escrito 1 número par.")
else:
print(f"Ha escrito {contador} números pares.")
if __name__ == "__main__":
main()
La versión que sólo acepta S, N, s o n por respuesta podría ser:
def main():
print("CUENTA PARES (2)")
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): ")
print()
if contador == 1:
print("Ha escrito 1 número par.")
else:
print(f"Ha escrito {contador} números pares.")
if __name__ == "__main__":
main()
Un algoritmo sencillo, pero poco eficiente, sería el siguiente:
def main():
print("DESCOMPOSICIÓN EN NÚMEROS PRIMOS")
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(f" {i}", end="")
print()
if __name__ == "__main__":
main()
Una solución más complicada, pero mucho más rápida, sería la siguiente:
def main():
print("DESCOMPOSICIÓN EN NÚMEROS PRIMOS")
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(f" {i}", end="")
i += 1
if copia != 1:
print(f" {copia}")
if __name__ == "__main__":
main()
Solución que, ligeramente modificada, sería más rápida para números grandes:
def main():
print("DESCOMPOSICIÓN EN NÚMEROS PRIMOS")
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 * i:
while copia % i == 0:
copia = copia // i
print(f" {i}", end="")
i += 1
if copia != 1:
print(f" {copia}")
if __name__ == "__main__":
main()