Está en la página 1de 3

TURNO 1

1. (3 puntos) Implementa una función suma_fichero que devuelve el sumatorio de los números
enteros almacenados en un fichero de texto, teniendo en cuenta que si el fichero no existe en
el sistema de archivos, devuelve None.
Si el fichero sí que existe, se lee cada una de sus líneas. En cada una puede haber un
número entero o un valor no entero. Al encontrar un entero, se debe añadir al sumatorio. Al
encontrar un valor no entero, debe imprimirse por pantalla (es importante no imprimir líneas
vacías adicionales para superar el pytest). La función debe devolver el resultado del
sumatorio obtenido.

2. (3 puntos) Implementa una función percentil que acepte dos argumentos: lista (una lista
ordenada de menor a mayor) y n (un elemento de esa lista), y que devuelva el percentil de n
con respecto a lista.
Para calcular un percentil es necesario encontrar el índice en el que se encuentra n y dividirlo
por la longitud de la lista menos 1.
Ejemplo: en la lista [1, 2, 3], 1 tiene el percentil 0, 2 tiene el percentil 0.5 y 3 tiene el
percentil 1. No está permitido utilizar la función index().
No es necesario considerar los casos en los que no hay elementos en la lista. Tampoco es
necesario considerar el caso en que el elemento no esté en la lista. En caso de que un
elemento aparezca varias veces, se ha de tener en cuenta la primera vez que aparece (por
ejemplo, en la lista [1, 1, 2], 1 tiene el percentil 0).
3. (4 puntos) Implementa un par de funciones que permiten determinar si un número es
perfecto. En ambas, solo debes considerar como entrada los números naturales (> 1).
3.1. La función divisores toma un parámetro natural x y devuelve una lista con los divisores
de x. Por ejemplo, divisores(6) debería devolver [1, 2, 3, 6].
3.2. La función es_perfecto tiene un parámetro natural n y devuelve un booleano que indica si
el número es perfecto o no.
Un número z es perfecto si la suma de los divisores de z es igual a z multiplicado por
dos. Para el cálculo de divisores, se debe emplear la función divisores.
Por ejemplo, 6 es un número perfecto: sus divisores son 1, 2, 3, 6; y su suma es 12 = 6 ×
2. 10 no es un número perfecto, porque sus divisores son 1, 2, 5, 10; y su suma es 18 6=
10 × 2. Los cuatro primeros números perfectos son 6, 28, 496 y 8128.

TURNO 2

1. (3 puntos) Implementa una función productorio_fichero que devuelve el productorio1 de los


números reales almacenados en un fichero de texto, teniendo en cuenta que si el fichero no
existe en el sistema de archivos, devuelve None.
Si el fichero sí que existe, se lee cada una de sus líneas. En cada una puede haber un
número real (decimal o entero) o un valor que no numérico. Al encontrar un número, se
debe añadir al productorio. Al encontrar un valor no numérico, debe imprimirse por pantalla
(es importante no imprimir líneas vacías adicionales para superar el pytest). La función
debe devolver el resultado del productorio obtenido.
2. (3 puntos) Implementa una función rango_de que, dada una lista de enteros, devuelva el
rango de esta lista. El rango de una lista es la resta del valor máximo menos el valor mínimo
de dicha lista. Por ejemplo, el rango de [4, 10, 1, 6] es 10 − 1 = 9. No está permitido usar las
funciones min y max.
La lista contendrá exclusivamente valores enteros, y tendrá al menos un elemento.
El fichero a rellenar sería pregunta2-Turno2.py

3. (4 puntos) Implementa un par de funciones para comprobar si un número es abundante. En


ambas, solo debes considerar como entrada los números naturales (> 1).
3.1. La función divisores_de toma un parámetro natural n y devuelve una lista con los
divisores de n, excluyendo a n. Por ejemplo, divisores_de(6) debería devolver [1, 2, 3].
3.2. La función es_abundante toma un parámetro natural x y devuelve un booleano que
indica si el número es abundante o no.
Un número z es abundante si la suma de sus divisores (excluyéndose a sí mismo) es
mayor que z. Para el cálculo de los divisores (excluyéndose a si mismo), se debe
emplear la función divisores_de.
Por ejemplo, 12 es un número abundante, porque sus divisores, excluyéndose a sí
mismo ([1, 2, 3, 4, 6]) suman 13, y 13 > 12. 10 no es un número abundante, porque sus
divisores, excluyéndose a sí mismo ([1, 2, 5]) suman 8, y 8 < 10. Los primeros números
abundantes son 12, 18, 20, 24, 30... (los números abundantes entre 1 y 270 están en el
fichero junto a los casos de test).

También podría gustarte