Examen: Programación en Python - Recuperación
Duración: 2 horas
Puntaje Total: 10 puntos
Instrucciones: Responde las siguientes preguntas buscando en documentación oficial,
foros o apuntes si es necesario. Explica brevemente el razonamiento detrás de tus
respuestas si se solicita.
Primera Parte: Test de Respuesta Múltiple (3 puntos, 0.3 cada una)
1. ¿Qué imprime este código?
frutas = ["manzana", "pera", "plátano"]
frutas[1] = "naranja"
print(frutas)
a) ["manzana", "naranja", "plátano"]
b) ["naranja", "pera", "plátano"]
c) ["manzana", "pera", "naranja"]
d) ["manzana", "pera", "plátano""naranja"]
2. ¿Qué hace el siguiente código?
resultado = [x**2 for x in range(5) if x % 2 == 0]
print(resultado)
a) Genera una lista con los números pares entre 0 y 5.
b) Genera una lista con los cuadrados de los números pares entre 0 y 5.
c) Genera una lista con los números impares entre 0 y 5.
d) Genera una lista vacía.
3. ¿Qué sucede si ejecutas este código?
x = 10
y = 0
print(x / y)
a) Devuelve un error porque no se puede dividir entre cero.
b) Imprime 0.
c) Imprime infinito.
d) El código no imprime nada porque está mal definido.
4. ¿Qué operador se utiliza para comprobar si un elemento pertenece a una lista en
Python?
a) []
b) contains
c) ==
d) in
5. Si ejecutas el siguiente código:
cadena = "Hola Mundo"
print(cadena[2:7])
¿Qué se imprimirá?
a) "la Mun"
b) "ola Mun"
c) "la Mund"
d) "ola Mu"
6. ¿Qué sucede si intentas acceder a un índice que no existe en una lista?
a) Devuelve un error de tipo.
b) Devuelve un error de índice.
c) Devuelve None.
d) No sucede nada.
7. ¿Qué se imprime al ejecutar este código?
x = 3
y = 7
print(f"{x} + {y} = {x + y}")
a) "3 + 7 = 10"
b) "x + y = x + y"
c) "3 + 7 = 37"
d) "3 + 7 = 3 + 7"
8. ¿Qué crees que intenta hacer el siguiente código?
def procesar_numeros(lista):
resultado = []
for numero in lista:
if numero % 2 == 0:
resultado.append(numero ** 2)
else:
resultado.append(numero * 2)
return resultado
a) Filtrar los números pares de la lista y devolverlos al cuadrado.
b) Elevar al cuadrado todos los números de la lista.
c) Generar una lista solo con los números impares al doble de su valor.
d) Calcular el cuadrado de los números pares y el doble de los impares.
9. ¿Qué resultado obtendrás al ejecutar el siguiente código?
x = 5
y = x
y += 3
print(x, y)
a) 5, 5
b) 8, 8
c) 5, 8
d) Error de asignación.
10.¿Qué hace el siguiente código?
mi_dict = {"a": 1, "b": 2}
print(mi_dict.get("c", 0))
a) Devuelve None.
b) Devuelve un error porque "c" no está en el diccionario.
c) Devuelve 0.
d) Devuelve 2.
Segunda Parte: Preguntas Abiertas (4 puntos, 1 cada una)
1. Explica brevemente las diferencias entre:
○ Un diccionario y una lista en Python.
○ Los operadores is y ==.
○ Un bucle for y una comprensión de lista.
○ Un error de tipo (TypeError) y un error de índice (IndexError).
2. Describe el propósito del método __str__ en una clase de Python y da un ejemplo
práctico de su uso.
3. ¿Qué es un módulo en Python? Da un ejemplo de cómo importarlo y usarlo.
4. ¿Cómo funcionan los operadores lógicos and, or y not en Python? Proporciona un
ejemplo que combine los tres en una sola expresión.
Tercera Parte: Ejercicios Prácticos (4 puntos, 2 cada uno)
1. Cálculo del promedio
Escribe una función llamada calcular_promedio que reciba una lista de números
y devuelva el promedio.
a) Proporciona el código de la función.
b) Demuestra cómo usar esta función con la lista [4, 8, 15, 16, 23, 42].
2. Diseña una clase llamada Coche que tenga:
○ Un atributo marca (cadena) y un atributo velocidad (entero) inicializado a 0
a no ser que lo pasen como parametro.
○ Un método acelerar que aumente la velocidad en 10.
○ Un método frenar que disminuya la velocidad en 10.
○ Un método mostrar_info que imprima la marca y la velocidad actual.
Crea una instancia de la clase con marca Toyota y velocidad 10. Acelera el coche
hasta 40 de velocidad, frenalo hasta 20 y muestra la información.
3. Escribe un programa que lea un archivo de texto llamado notas.txt y:
○ Cuente cuántas palabras hay en el archivo.
○ Cree un nuevo archivo llamado reporte.txt que escriba:
■ El número total de palabras.
■ Las primeras dos líneas del archivo original.
Examen: Programación en Python - Recuperación
Duración: 2 horas
Puntaje Total: 10 puntos
Instrucciones: Responde las siguientes preguntas buscando en documentación oficial,
foros o apuntes si es necesario. Explica brevemente el razonamiento detrás de tus
respuestas si se solicita.
Primera Parte: Test de Respuesta Múltiple (3 puntos, 0.3 cada una)
1. ¿Qué imprime este código?
frutas = ["manzana", "pera", "plátano"]
frutas[1] = "naranja"
print(frutas)
a) ["manzana", "naranja", "plátano"]
b) ["naranja", "pera", "plátano"]
c) ["manzana", "pera", "naranja"]
d) ["manzana", "pera", "plátano""naranja"]
2. ¿Qué hace el siguiente código?
resultado = [x**2 for x in range(5) if x % 2 == 0]
print(resultado)
a) Genera una lista con los números pares entre 0 y 5.
b) Genera una lista con los cuadrados de los números pares entre 0 y 5.
c) Genera una lista con los números impares entre 0 y 5.
d) Genera una lista vacía.
3. ¿Qué sucede si ejecutas este código?
x = 10
y = 0
print(x / y)
a) Devuelve un error porque no se puede dividir entre cero.
b) Imprime 0.
c) Imprime infinito.
d) El código no imprime nada porque está mal definido.
4. ¿Qué operador se utiliza para comprobar si un elemento pertenece a una lista en
Python?
a) []
b) contains
c) ==
d) in
5. Si ejecutas el siguiente código:
cadena = "Hola Mundo"
print(cadena[2:7])
¿Qué se imprimirá?
a) "la Mun"
b) "ola Mun"
c) "la Mund"
d) "ola Mu"
6. ¿Qué sucede si intentas acceder a un índice que no existe en una lista?
a) Devuelve un error de tipo.
b) Devuelve un error de índice.
c) Devuelve None.
d) No sucede nada.
7. ¿Qué se imprime al ejecutar este código?
x = 3
y = 7
print(f"{x} + {y} = {x + y}")
a) "3 + 7 = 10"
b) "x + y = x + y"
c) "3 + 7 = 37"
d) "3 + 7 = 3 + 7"
8. ¿Qué crees que intenta hacer el siguiente código?
def procesar_numeros(lista):
resultado = []
for numero in lista:
if numero % 2 == 0:
resultado.append(numero ** 2)
else:
resultado.append(numero * 2)
return resultado
a) Filtrar los números pares de la lista y devolverlos al cuadrado.
b) Elevar al cuadrado todos los números de la lista.
c) Generar una lista solo con los números impares al doble de su valor.
d) Calcular el cuadrado de los números pares y el doble de los impares.
9. ¿Qué resultado obtendrás al ejecutar el siguiente código?
x = 5
y = x
y += 3
print(x, y)
a) 5, 5
b) 8, 8
c) 5, 8
d) Error de asignación.
10.¿Qué hace el siguiente código?
mi_dict = {"a": 1, "b": 2}
print(mi_dict.get("c", 0))
a) Devuelve None.
b) Devuelve un error porque "c" no está en el diccionario.
c) Devuelve 0.
d) Devuelve 2.
Segunda Parte: Preguntas Abiertas (4 puntos, 1 cada una)
1. Explica brevemente las diferencias entre:
○ Un diccionario y una lista en Python.
Un diccionario almacena pares clave-valor y tiene acceso rápido por clave.
Una lista es una colección ordenada de elementos accesibles por índice.
○ Los operadores is y ==.
is: Comprueba si dos variables apuntan al mismo objeto en memoria.
==: Comprueba si los valores son iguales.
○ Un bucle for y una comprensión de lista.
Un bucle for itera para realizar acciones. Una comprensión de lista crea una
nueva lista en una línea.
○ Un error de tipo (TypeError) y un error de índice (IndexError).
TypeError: Error cuando el tipo de dato es inválido.
IndexError: Error al acceder a un índice inválido de una lista.
2. Describe el propósito del método __str__ en una clase de Python y da un ejemplo
práctico de su uso.
Define la representación string de un objeto.
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def __str__(self):
return f"Persona: {self.nombre}"
print(Persona("Álvaro"))
3. ¿Qué es un módulo en Python? Da un ejemplo de cómo importarlo y usarlo.
Es un archivo con funciones o variables reutilizables.
import math
print(math.sqrt(16))
4. ¿Cómo funcionan los operadores lógicos and, or y not en Python? Proporciona un
ejemplo que combine los tres en una sola expresión.
a = True
b = False
print((a and not b) or b) # True
Tercera Parte: Ejercicios Prácticos (4 puntos, 2 cada uno)
1. Cálculo del promedio
Escribe una función llamada calcular_promedio que reciba una lista de números
y devuelva el promedio.
a) Proporciona el código de la función.
b) Demuestra cómo usar esta función con la lista [4, 8, 15, 16, 23, 42].
def calcular_promedio(lista):
return sum(lista) / len(lista)
numeros = [4, 8, 15, 16, 23, 42]
print(calcular_promedio(numeros)) # 18.0
2. Diseña una clase llamada Coche que tenga:
○ Un atributo marca (cadena) y un atributo velocidad (entero) inicializado a 0
a no ser que lo pasen como parametro.
○ Un método acelerar que aumente la velocidad en 10.
○ Un método frenar que disminuya la velocidad en 10.
○ Un método mostrar_info que imprima la marca y la velocidad actual.
Crea una instancia de la clase con marca Toyota y velocidad 10. Acelera el coche
hasta 40 de velocidad, frenalo hasta 20 y muestra la información.
class Coche:
def __init__(self, marca, velocidad=0):
self.marca = marca
self.velocidad = velocidad
def acelerar(self):
self.velocidad += 10
def frenar(self):
self.velocidad -= 10
def mostrar_info(self):
print(f"Marca: {self.marca}, Velocidad: {self.velocidad} km/h")
# Crear una instancia de la clase Coche
mi_coche = Coche("Toyota", 10)
# Acelerar hasta 40 de velocidad
mi_coche.acelerar()
mi_coche.acelerar()
mi_coche.acelerar()
mi_coche.acelerar()
# Frenar hasta 20 de velocidad
mi_coche.frenar()
mi_coche.frenar()
# Mostrar información del coche
mi_coche.mostrar_info()
3. Escribe un programa que lea un archivo de texto llamado notas.txt y:
○ Cuente cuántas palabras hay en el archivo.
○ Cree un nuevo archivo llamado reporte.txt que escriba:
■ El número total de palabras.
■ Las primeras dos líneas del archivo original.
with open("notas.txt", "r") as archivo:
contenido = archivo.readlines()
total_palabras = sum(len(linea.split()) for linea in contenido)
with open("reporte.txt", "w") as reporte:
reporte.write(f"Total de palabras: {total_palabras}\n")
reporte.writelines(contenido[:2])