Está en la página 1de 1

Examen de Programación 12400 (LP2)

10 de enero de 2022, turno 2, 12:30-14:00

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.
Ejemplo. Si el fichero contiene las siguientes líneas:
1.0
sorry
-1.5
1.5
10
hola
-5.6

El programa debe devolver el valor 1,0 × −1,5 × 1,5 × 10 × −5,6 = 126 e imprimir por pantalla las líneas
“sorry” y “hola”.
El fichero a rellenar sería pregunta1-Turno2.py
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).
El fichero a rellenar sería pregunta3-Turno2.py

1 Un productorio es una secuencia de multiplicaciones, muy similar al sumatorio, que es una secuencia de sumas. Se denota con el
símbolo Π. Por ejemplo, el factorial se puede definir como un productorio: n! = n × (n − 1) × (n − 2) × . . . × 2 × 1 = Πn
i=1 n.

También podría gustarte