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

def main():
    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.")


if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - A-2

def main():
    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=" ")


if __name__ == "__main__":
    main()

Comentarios

Programa mejorado

Como los divisores 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.

def main():
    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 // 2 + 1):
            if numero % i == 0:
                print(i, end=" ")
        print(f"{numero} ")


if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - A-3

def main():
    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.")


if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - A-4

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


if __name__ == "__main__":
    main()

Comentarios

B. Contadores

Bucle for (1) - B-1

def main():
    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.")


if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - B-2

def main():
  print("CONTADOR DE PARES E IMPARES")
  valores = int(input("¿Cuántos valores va a introducir? "))
  if valores < 0:
      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.")


if __name__ == "__main__":
  main()

Comentarios

Bucle for (1) - B-3

def main():
    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.")


if __name__ == "__main__":
    main()

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.

def main():
    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.")


if __name__ == "__main__":
    main()

C. Acumuladores

Bucle for (1) - C-1

def main():
    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}")


if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - C-2

def main():
    print("SUMA ENTRE VALORES")
    numero_1 = int(input("Escriba un número entero positivo: "))
    if numero_1 <= 0:
        print("¡Le he pedido un número entero positivo!")
    else:
        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 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}")


if __name__ == "__main__":
    main()

Comentarios

C-2-2 - Mostrar suma

def main():
    print("SUMA ENTRE VALORES")
    numero_1 = int(input("Escriba un número entero positivo: "))
    if numero_1 <= 0:
        print("¡Le he pedido un número entero positivo!")
    else:
        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 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}")

if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - C-3

def main():
    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}")

if __name__ == "__main__":
    main()

Comentarios

Bucle for (1) - C-4

def main():
    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}.")

if __name__ == "__main__":
    main()

Comentarios