Banco de Preguntas para Los Alumnos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Banco de preguntas público

Éste banco de preguntas se ha compilado a partir de propuestas de distintos profesores de teoría de


la asignatura. No ha habido filtro alguno sobre las preguntas ni consenso previo entre los
profesores, cada profesor ha propuesto las que ha considerado oportunas. Es posible que un profesor
haya hecho una pregunta para este banco sobre un concepto que no se haya explicado en otros
grupos de teoría. De cara a las preguntas que finalmente entren en el examen parcial de teoría sí
habrá un proceso de consenso entre los profesores y se escogerán preguntas en las que todos los
profesores estén de acuerdo. De todas maneras, estos enunciados os ayudarán a preparar mejor el
examen parcial de teoría de Informática.
1. ¿Qué escribe este programa?
a = b = 'hola'
a = 'pepe'
print(b)
a = b = []
a.append(1)
print(b)

Marca la respuesta correcta


'hola' 'hola' 'pepe' 'pepe'
[] [1] [] [1]

2. Reescribe este programa para que utilice el while


for x in range(len(l)):
l[x] += 1

3. Dado el siguiente enunciado


Diseña una función capicua(string) que, dado un string, diga si es o no capicua.
marca el esquema que sigue:
búsqueda recorrido
justifica la respuesta
________________________________________________________________________________
________________________________________________________________________________

4. Si una secuencia es una frase acabada en '.', ¿por qué no se adecúa bien a un programa con for?
5. El siguiente programa NO finaliza. Completa la instruccion que falta:
i = 0
while i<len(l):
if l[i]=x
return i
_______
return False

6. ¿Qué hace el siguiente programa?


i = 0
while i<len(l):
del(l[i])

7. ¿Por qué falla el siguiente programa?


l = [1, 2, 3, 4]
for i in range(len(l)):
del(l[i])

8. Reescribe el siguiente programa python en una sola instrucción de referenciación en una línea:
i = 0
while i<len(l):
del(l[i])

9. Describe y justifica cuál es el resultado de la función siguiente:


def funcion(lista_str, lista_int):
d = {}
for pal, num in zip(lista_str, lista_int):
if pal in d:
d[pal] += num
else:
d[pal] = num
return d

10. Escribe un docstring adecuado para la función anterior, que incluya dos ejemplos para su
comprobación mediante doctest
11. Sustituye el bucle for en el código siguiente por un bucle while, de manera que el resultado de la
función sea equivalente:
def promedio(lista):
suma = 0
for num in lista:
suma += num
return suma/len(lista)
12.El programa siguiente añade una lista dentro de otra. Justifica la razón por la cual el resultado no
es el esperado.
lst1 = [1, 2, 3, 4, 5]
lst2 = [7, 8, 9]
for elem in lst2:
lst1.insert(2, elem)

13. ¿Qué problema nos podemos encontrar al definir una matriz 2D de la manera siguiente?
num_col = 10
num_fil = 5
fila = [0] * num_col
matriz = [fila] * num_fil

14. Completa el programa siguiente, que copia el contenido de un fichero de texto en otro, línea a
ĺínea:
with open("origen.txt", ___) as f_ent, open("destino.txt", ___) as
f_sal:
for lin in f_ent:
f_sal.____("{:s}".format(____))

15. Corrige los errores en el código siguiente, que calcula la lista de números primos en un intervalo
determinado:
def es_primo(num):
from math import sqrt
if num > 1:
for div in range(2, int(sqrt(num))+1):
if num/div == 0:
return True
return False
else:
return True

def primos_entre(a, b):


"""Devuelve una lista con los números
primos existentes entre a y b (a < b)

Ejemplos:
>>> primos_entre(5, 1)
[]
>>> primos_entre(7, 29)
[7, 11, 13, 17, 19, 23, 29]
>>> primos_entre(1328, 1360)
[]
"""
lista = []
for num in range(a, b+1):
if es_primo(num):
lista.append[num]
return num
1

if name=="main":
print(primos_entre(10, 0))
print(primos_entre(10, 20))
print(primos_entre(9552, 9584))
print(primos_entre(33, 66))

16. Justify True or False: The values in a dictionary are accessed with keys, not with indices, so there
is no need to care about ordering.
17. Explain step by step the output of this program:
>>> items = [0, 1, 7 / 2, None, False, "hi", (), 7.3, (2, 0)]
>>> tr = [ ]
>>> for item in items:
... if item:
... tr.append(item)
>>> tr
>>> print (tr)
_______________________________

18. Dado el programa


def lista_cuadrados(x, n):
L, k=[], 0
while k<n:
item = x**k
L.append(item)
k=k+1
return L
(1) ¿Cual es el resultado de ejecutar?
>>> lista_cuadrados(2,5)
(2) ¿El programa anterior corresponde a un esquema de recorrido o de búsqueda?. Justificar la
respuesta.
(3)Justificar si el programa el cumple los criterios de eficiencia que enseñados en clase o si hay
multiplicaciones innecesarias. En tal caso indicar cual sería el programa correcto.
19. Este doctest está mal, corrígelo:
def funcion(x):
'''
>>> funcion(3)
{a: 1, b: 2, c: 3}
'''
20. ¿Cómo se puede escribir un diccionario en forma de lista de tuplas ordenadas por valor?
21. Cálculo del coseno de cualquier ángulo a partir de la aproximación mediante la serie de Taylor:
¿Cuál es el resultado de ejecutar este programa?
from math import pi, cos
def cos_taylor(x, error=1e-9):
term = 1
n = 0
suma = term
while abs(term)>error:
n = n+2
term= -term*(x*x/(n*(n-1)))
suma + term
return suma
print(cos(pi/3))
print(cos_taylor(pi/3))

22. Dado el programa:


def lista_cuadrados(x, n):
L = []
k = 0
while k<n:
item = x**k
L.append(item)
k = k+1
return L

Pregunta 1. ¿Cuál es el resultado de ejecutar?


>>> lista_cuadrados(2,6)
Pregunta 2. ¿El programa anterior corresponde a un esquema de recorrido o de búsqueda? Justificar
la respuesta.
Pregunta 3. ¿Se podría mejorar la velocidad del programa reduciendo el número de multiplicaciones
que crece en cada iteración? En tal caso indicar cuál sería el programa correcto.

Respuesta 1:
[1, 2, 4, 8, 16, 32]
Respuesta 2: Es un esquema de recorrido, se va construyendo item a item la lista de salida.
Respuesta 3: Hay muchas multiplicaciones innecesarias. Se puede utilizar item para calcular el
siguiente valor de la lista:
def lista_cuadrados_fast(x, n):
L = []
k = 1
item = 1
while k<n:
L.append(item)
k = k+1
item = item*x
return L
23. Pregunta 1. ¿Cuál es el resultado de ejecutar el siguiente programa?
def my_loop(w):
r=""
for i in len(w):
r=r+ w[i]+w[i]
return r
print(my_loop("patata"))

Pregunta 2. Si el funcionamiento no es el esperado, ¿cómo se puede arreglar?

Respuesta 1. Hay un problema de tipos, el for espera un range, lista, etc. Formalmente espera un
iterable y no un int. Cuando lo ejecutamos obtenemos
TypeError: 'int' object is not iterable

Respuesta 2. Hay que definir el iterable para el for: range(len(w))


def my_good_loop(w):
r=""
for i in range(len(w)):
r=r+ w[i]+w[i]
return r
print(my_good_loop("patata"))

24. Dado el siguiente programa:


def my_while_loop(w):
i=0
r = ''
while i <len(w):
r=r+ (i+1)*w[i]
i = i+1
return r

Pregunta 1. ¿Cuál es el resultado de ejecutar?


>>> my_while_loop("patata")
Pregunta 2. ¿Cuál es el resultado de ejecutar el programa (en que hemos comentado i = i+1)?
def my_while_loop(w):
i=0
r = ''
while i <len(w):
r=r+ (i+1)*w[i]
#i = i+1
return r
print(my_while_loop("patata"))

Respuesta 1.
>>> my_while_loop('patata')
'paatttaaaatttttaaaaaa'

Respuesta 2. El programa no acaba nunca (es un bucle infinito) .


25. En la siguiente lista anidada m = [[1, 2, 3], [4, 5, 6],[7, 8, 9]] indica el valor de los elementos:
m[1]
m[2][1]

26. En el siguiente diccionario T = {'Sevilla': 25.5, 'Londres': 15.4, 'Lisboa': 17.5}, indique si las
siguientes frases son verdaderas o no:
a) Para acceder al elemento de valor 25.5 se hace con T[0]
b) Para acceder al elemento de valor 15.4 se hace con T['Londres']
c) Se puede añadir elemento T['Alicante'] = 26
d) Se puede acceder al valor 26, T[26]

27. Algunos programas actuales, como WhatsApp, guardan las imágenes y videos con un nombre
que contiene la fecha en el formato AAAAMMDD. Por ejemplo, la 1ª imagen del 02/11/2016 la
guarda como IMG-20161102-WA0001 y el 3º video del día es VID-20161102-WA0003
Pregunta 1: Diseña una función que dados tres parámetros de entrada enteros: dia, mes, any, realice
la conversión al formato AAAAMMDD (entero, int) y lo retorne.
Pregunta 2: Diseña otra función que devuelva el string del nombre de la imagen o video. A la
función tiene 3 parámetros: (i) la fecha como un entero AAAAMMDD (por ejemplo, el devuelto de
la función anterior), (ii) el número de la imagen o video del día (1, 2, etc.) y (iii) si es imagen (por
ejemplo, 1) o video (2).

También podría gustarte