Sucesiones - Soluciones

Se ofrecen a continuación unas posibles soluciones de los ejercicios de Sucesiones aritméticas.

Sucesiones - 1 - Sucesiones aritméticas

Las sucesiones se pueden generar utilizando el tipo range() con un único argumento:

def main():
    for i in range(10):
        print(f"{2 * i + 2} ", end="")
    print()

    for i in range(8):
        print(f"{2 * i + 20} ", end="")
    print()

    for i in range(6):
        print(f"{4 * i + 10} ", end="")
    print()

    for i in range(9):
        print(f"{-5 * i + 40} ", end="")
    print()

    for i in range(10):
        print(f"{i + 1} ", end="")
    print()


if __name__ == "__main__":
    main()

O mediante el tipo range() con dos argumentos, (en estas soluciones el bucle empieza siempre con el valor 1:

def main():
    for i in range(1, 11):
        print(f"{2 * i} ", end="")
    print()

    for i in range(1, 9):
        print(f"{2 * i + 18} ", end="")
    print()

    for i in range(1, 7):
        print(f"{4 * i + 6} ", end="")
    print()

    for i in range(1, 10):
        print(f"{-5 * i + 45} ", end="")
    print()

    for i in range(1, 11):
        print(f"{i} ", end="")
    print()


if __name__ == "__main__":
    main()

O mediante el tipo range() con tres argumentos, para que siempre baste con imprimir i:

def main():
    for i in range(2, 22, 2):
        print(f"{i} ", end="")
    print()

    for i in range(20, 36, 2):
        print(f"{i} ", end="")
    print()

    for i in range(10, 34, 4):
        print(f"{i} ", end="")
    print()

    for i in range(40, -5, -5):
        print(f"{i} ", end="")
    print()

    for i in range(1, 11, 1):
        print(f"{i} ", end="")
    print()


if __name__ == "__main__":
    main()

Sucesiones - 2 - Sucesiones NO aritméticas

Una posible solución, en la que se han elegido los tipos range() de manera que la fórmula sea lo más simple posible, sería la siguiente:

def main():
    for i in range(1, 11):
        print(f"{i * i} ", end="")
    print()

    for i in range(1, 11):
        print(f"{i * i + 1} ", end="")
    print()

    for i in range(2, 8):
        print(f"{i ** 3} ", end="")
    print()

    for i in range(1, 7):
        print(f"{1 / i} ", end="")
    print()

    for i in range(1, 8):
        print(f"{i * (i + 1)} ", end="")
    print()

    for i in range(6):
        print(f"{10 ** i} ", end="")
    print()

    for i in range(5):
        print(f"{1 / 10 ** i} ", end="")
    print()

    for i in range(8):
        print(f"{(-1) ** i} ", end="")
    print()


if __name__ == "__main__":
    main()

Si se hubiera querido utilizar el tipo range() con un único argumento, las cinco primeras secuencias hubieran sido:

def main():
    for i in range(10):
        print(f"{(i + 1) * (i + 1)} ", end="")
    print()

    for i in range(10):
        print(f"{(i + 1) * (i + 1) + 1} ", end="")
    print()

    for i in range(6):
        print(f"{(i + 2) ** 3} ", end="")
    print()

    for i in range(6):
        print(f"{1 / (i + 1)} ", end="")
    print()

    for i in range(7):
        print(f"{(i + 1) * (i + 2)} ", end="")
    print()


if __name__ == "__main__":
    main()