Durante esta actividad, los alumnos serán capaces de:
for
en Python.
NOTA: La siguiente actividad se puede realizar de manera individual o en parejas.
Crea un archivo fuente llamado practica5.py
.
Coloca en la parte superior de este archivo el siguiente comentario reemplazando los datos ficticios con tus datos personales (matrícula y nombre):
# Autores: # A01166611 Pepper Pots # A01160611 Anthony Stark # # Descripción de la práctica. # # 27 de septiembre, 2019. . . (El resto del programa va aquí) .
En este mismo archivo escribe en Python las funciones que se describen a continuación. Cada función debe incluir al inicio una cadena de documentación que describa brevemente el comportamiento de la función seguido de todos los casos de prueba indicados en la descripción del problema. Por ejemplo:
def raiz_cuadrada_entera(n): """ Devuelve la raíz cuadrada entera de n. >>> raiz_cuadrada_entera(4) 2 >>> raiz_cuadrada_entera(20) 4 >>> raiz_cuadrada_entera(70) 8 >>> raiz_cuadrada_entera(0) 0 >>> isinstance(raiz_cuadrada_entera(0), int) True """ raiz_cuadrada = n ** 0.5 truncado = int(raiz_cuadrada) return truncado
Coloca al final del archivo y una sola vez el siguiente código con el fin de que las pruebas se ejecuten de manera automática al momento de correr el programa:
if __name__ == '__main__': import doctest print(doctest.testmod())
Escribe la función piramide
que recibe como argumento un número entero positivo n
mayor a cero. Devuelve el resultado de: \(1^2 + 2^2 + 3^2 + \cdots + n^2 \).
Pruebas:
>>> piramide(1) 1 >>> piramide(2) 5 >>> piramide(3) 14 >>> piramide(10) 385 >>> piramide(100) 338350
Escribe la función factorial
que recibe como argumento un número entero positivo n
mayor a cero. Devuelve el factorial de \(n\), es decir, el producto de todos los números enteros positivos desde 1 hasta \(n\):
Pruebas:
>>> factorial(1) 1 >>> factorial(2) 2 >>> factorial(3) 6 >>> factorial(5) 120 >>> factorial(10) 3628800 >>> factorial(20) 2432902008176640000 >>> factorial(30) 265252859812191058636308480000000 >>> factorial(40) 815915283247897734345611269596115894272000000000
El problema de Basilea consiste en encontrar la suma exacta de los inversos de los cuadrados de los enteros positivos, esto es:
$$ \sum_{k=1}^{n}\frac{1}{k^2}=\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\cdots+\frac{1}{n^2} $$
Escribe la función basilea
que recibe como argumento un entero positivo n
mayor a cero. Devuelve la solución al problema de Basilea usando la fórmula de arriba.
Pruebas:
>>> basilea(1) 1.0 >>> basilea(2) 1.25 >>> basilea(5) 1.4636111111111112 >>> basilea(10) 1.5497677311665408 >>> basilea(1000) 1.6439345666815615 >>> basilea(1000000) 1.64493306684877
La fórmula de Leibniz para calcular un valor aproximado de \(\pi\), a partir de un valor de \(n \ge 0 \), es la siguiente:
$$ \pi \approx 4 \left ( \sum_{i=0}^{n}\frac{(-1)^i}{2i+1} \right ) = 4 \left ( 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \cdots + \frac{(-1)^n}{2n+1} \right ) $$La aproximación de \(\pi\) es mejor entre más grande sea el valor de \(n\).
Escribe la función leibniz_pi
que recibe como argumento un entero positivo n
mayor o igual a cero. Deveuelve una aproximación de \(\pi\) usando la fórmula anterior.
Pruebas:
>>> leibniz_pi(0) 4.0 >>> leibniz_pi(1) 2.666666666666667 >>> leibniz_pi(2) 3.466666666666667 >>> leibniz_pi(10) 3.232315809405594 >>> leibniz_pi(100) 3.1514934010709914 >>> leibniz_pi(1000) 3.1425916543395442 >>> leibniz_pi(10000) 3.1416926435905346 >>> leibniz_pi(100000) 3.1416026534897203 >>> leibniz_pi(1000000) 3.1415936535887745
Escribe la función decimal_recurrente
que recibe como argumentos dos enteros positivos d
y n
mayores a cero. Devuelve un número flotante donde d
aparece n
veces después del punto decimal. Por ejemplo, si d
es igual a 8 y n
es igual a 5, entonces la función devuelve 0.88888
.
Como serie, la función se puede expresar así:
$$ \sum_{j=1}^{n} \frac{d}{10^j} $$Pruebas:
>>> decimal_recurrente(5, 1) 0.5 >>> decimal_recurrente(1, 3) 0.111 >>> decimal_recurrente(4, 4) 0.4444 >>> decimal_recurrente(8, 5) 0.88888 >>> decimal_recurrente(2, 9) 0.222222222 >>> decimal_recurrente(3, 11) 0.33333333333 >>> decimal_recurrente(9, 14) 0.99999999999999
Todas tus funciones deben estar contenidas en el archivo practica5.py
.
Para entregar el archivo practica5.py
, ingresa los siguientes datos:
Si la práctica fue desarrollada por un equipo de dos personas, basta que una persona la entregue.
Fecha límite: Viernes, 27 de septiembre.