Bucle for - Soluciones (1)

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

A. Bucles

Bucle for (1) - A-1

print("PARES E IMPARES")
numero_1 = int(input("Escriba un número entero: "))
numero_2 = int(input(f"Escriba un número entero mayor o igual que {numero_1}: "))

if numero_2 < numero_1:
    print(f"¡Le he pedido un número entero mayor o igual que {numero_1}!")
else:
    for i in range(numero_1, numero_2 + 1):
        if i % 2 == 0:
            print(f"El número {i} es par")
        else:
            print(f"El número {i} es impar")

Comentarios

Bucle for (1) - A-2

print("DIVISORES")
numero = int(input("Escriba un número entero mayor que cero: "))

if numero <= 0:
    print("¡Le he pedido un número entero mayor que cero!")
else:
    print(f"Los divisores de {numero} son ", end="")
    for i in range(1, numero + 1):
        if numero % i == 0:
            print(i, end=" ")

Comentarios

Programa mejorado

Como los divisiores de un números son siempre inferiores o igual a la mitad del número (exceptuando el propio número, claro), no hace falta comprobar todos los valores desde 1 hasta el número, basta con probar hasta la mitad del número.

print("DIVISORES")
numero = int(input("Escriba un número entero mayor que cero: "))

if numero <= 0:
    print("¡Le he pedido un número entero mayor que cero!")
else:
    print(f"Los divisores de {numero} son ", end="")
    for i in range(1, round(numero/2)+1):
        if numero % i == 0:
            print(i, end=" ")
    print(numero)

Comentarios

Bucle for (1) - A-3

print("MAYORES QUE EL PRIMERO")
valores = int(input("¿Cuántos valores va a introducir? "))
if valores < 1:
    print("¡Imposible!")
else:
    primero = int(input("Escriba un número: "))
    for i in range(valores - 1):
        numero = int(input(f"Escriba un número más grande que {primero}: "))
        if numero <= primero:
            print(f"¡{numero} no es mayor que {primero}!")
    print("Gracias por su colaboración")

Comentarios

Bucle for (1) - A-4

print("MAYORES QUE EL ANTERIOR")
valores = int(input("¿Cuántos valores va a introducir? "))
if valores < 1:
    print("¡Imposible!")
else:
    primero = int(input("Escriba un número: "))
    for i in range(valores - 1):
        numero = int(input(f"Escriba un número más grande que {primero}: "))
        if numero <= primero:
            print(f"¡{numero} no es mayor que {primero}!")
        primero = numero
    print("Gracias por su colaboración")

Comentarios

B. Contadores

Bucle for (1) - B-1

print("NÚMEROS NEGATIVOS")
numero = int(input("¿Cuántos valores va a introducir? "))

if numero <= 0:
    print("¡Imposible!")
else:
    contador = 0
    for i in range(1, numero + 1):
        valor = float(input(f"Escriba el número {i}: "))
        if valor < 0:
            contador = contador + 1
    if contador == 0:
        print("No ha escrito ningún número negativo")
    elif contador == 1:
        print("Ha escrito 1 número negativo")
    else:
        print(f"Ha escrito {contador} números negativos")

Comentarios

Bucle for (1) - B-2

print("CONTADOR DE PARES E IMPARES")
valores = int(input("¿Cuántos valores va a introducir? "))
if valores < 1:
    print("¡Imposible!")
else:
    pares = 0
    for i in range(1, valores + 1):
        numero = int(input(f"Escriba el valor {i}: "))
        if numero % 2 == 0:
            pares += 1
    print(f"Ha escrito {pares} números pares y {valores - pares} números impares")
    print("Gracias por su colaboración")

Comentarios

Bucle for (1) - B-3

print("NÚMERO PRIMO")
numero = int(input("Escriba un número entero mayor que 1: "))

if numero <= 1:
    print("¡Le he pedido un número entero mayor que 1!")
else:
    contador = 0
    for i in range(1, numero + 1):
        if numero % i == 0:
            contador = contador + 1
    if contador == 2:
        print(f"{numero} es primo")
    else:
        print(f"{numero} no es primo")

Comentarios

Programa mejorado

Para que el programa vaya mucho más rápido, se podría probar únicamente la divisibilidad por los números hasta la raíz cuadrada del número, puesto que si es divisible por algún número mayor que su raíz cuadrada, lo será también por un número menor que su raíz cuadrada.

print("NÚMERO PRIMO")
numero = int(input("Escriba un número entero mayor que 1: "))

if numero <= 1:
    print("¡Le he pedido un número entero mayor que 1!")
else:
    contador = 0
    limite = round(numero ** 0.5)
    for i in range(1, limite + 1):
        if numero % i == 0:
            contador = contador + 1
    if contador == 1:
        print(f"{numero} es primo")
    else:
        print(f"{numero} no es primo")

C. Acumuladores

Bucle for (1) - C-1

print("SUMA DE VALORES")
numero = int(input("¿Cuántos valores va a introducir? "))

if numero <= 0:
    print("¡Imposible!")
else:
    suma = 0
    for i in range(1, numero + 1):
        valor = float(input(f"Escriba el número {i}: "))
        suma = suma + valor
    print(f"La suma de los números que ha escrito es {suma}")

Comentarios

Bucle for (1) - C-2

print("SUMA ENTRE VALORES")
numero_1 = int(input("Escriba un número entero: "))
numero_2 = int(input(f"Escriba un número entero mayor que {numero_1}: "))

if numero_2 <= numero_1:
    print(f"¡Le he pedido un número entero mayor o igual que {numero_1}!")
else:
    suma = 0
    for i in range(numero_1, numero_2 + 1):
        suma = suma + i
    print(f"La suma desde {numero_1} hasta {numero_2} es {suma}")

    for i in range(numero_1, numero_2):
        print(f"{i} + ", end="")
    print(f"{numero_2} = {suma}")

Comentarios

Bucle for (1) - C-3

print("MAYOR, MENOR Y MEDIA ARITMÉTICA")
numero = int(input("¿Cuántos valores va a introducir? "))

if numero <= 0:
    print("¡Imposible!")
else:
    valor = float(input("Escriba el número 1: "))
    minimo = maximo = suma = valor
    for i in range(2, numero + 1):
        valor = float(input(f"Escriba el número {i}: "))
        suma = suma + valor
        if valor < minimo:
            minimo = valor
        if valor > maximo:
            maximo = valor
    print(f"El número más pequeño de los introducidos es {minimo}")
    print(f"El número más grande de los introducidos es {maximo}")
    print(f"La media de los números introducidos es {suma / numero}")

Comentarios

Bucle for (1) - C-4

print("FACTORIAL")
numero = int(input("Escriba un número entero mayor que cero: "))

if numero <= 0:
    print("¡Le he pedido un número entero mayor que cero!")
else:
    factorial = 1
    for i in range(1, numero + 1):
        factorial = factorial * i
    print(f"El factorial de {numero} es {factorial}")

Comentarios