Preguntas y respuestas: Python

Repasa Python: aquí tienes una selección de preguntas de todos los niveles, con respuesta y explicación. Para ponerte a prueba sin ver las respuestas, juega a los quizzes.

Jugar a los quizzes de Python

Fácil

¿Quién diseñó el lenguaje Python?

Respuesta : Guido van Rossum

Guido van Rossum diseñó Python, cuya primera versión publicada es de 1991.

¿De dónde viene el nombre del lenguaje Python?

Respuesta : Del grupo británico Monty Python

Guido van Rossum eligió este nombre en referencia al grupo cómico británico Monty Python.

¿Qué delimita los bloques de código en Python, como el cuerpo de un if o de una función?

Respuesta : La indentación

En Python la indentación no es un detalle de presentación: delimita los bloques de if, for, funciones y clases.

¿De qué tipo es el valor 3.14 en Python?

Respuesta : float

Un número escrito con punto decimal es de tipo float; int designa los enteros sin parte decimal.

¿Qué palabra clave permite añadir una segunda condición después de un if en Python?

Respuesta : elif

elif es la contracción de else if: añade una condición tras el if, antes de un eventual else.

¿Qué estructura de Python se puede modificar después de crearla?

Respuesta : La lista

Una lista, escrita entre corchetes, se modifica (añadir, eliminar, reemplazar); una tupla, escrita entre paréntesis, no se modifica.

¿Qué expresión crea un diccionario Python con la clave 'nom' y el valor 'Ada'?

Respuesta : {'nom': 'Ada'}

Un diccionario se escribe entre llaves, en la forma clave: valor; {'nom', 'Ada'} sin dos puntos es un conjunto (set).

¿Qué valores produce list(range(3))?

Respuesta : [0, 1, 2]

range(3) empieza en 0 y se detiene antes de 3: produce 0, 1 y 2, es decir, tres valores.

Medio

¿Qué devuelve [n * n for n in [1, 2, 3]]?

Respuesta : [1, 4, 9]

Una comprensión de lista recorre la secuencia y calcula cada elemento: aquí n * n da 1, 4 y después 9.

Con def f(a, b=2): return b, ¿qué devuelve f(1)?

Respuesta : 2

Un parámetro que tiene valor por defecto lo recibe cuando quien llama no proporciona argumento para él.

¿Qué contiene el parámetro **kwargs dentro de una función?

Respuesta : Un diccionario de los argumentos con nombre

**kwargs reúne los argumentos pasados con nombre (mot=valeur) en un diccionario.

¿Qué devuelve 'Bonjour'[0:3]?

Respuesta : 'Bon'

El slicing [début:fin] toma los índices desde el inicio y se detiene antes del fin: aquí los índices 0, 1 y 2, es decir, 'Bon'.

¿Qué nombre se usa por convención para el primer parámetro de un método de instancia en Python?

Respuesta : self

El primer parámetro de un método de instancia recibe el objeto actual; la convención es llamarlo self.

¿Para qué sirve un entorno virtual (venv) en Python?

Respuesta : Aislar los paquetes instalados para un proyecto dado

Un venv es una carpeta que aísla los paquetes de un proyecto, para evitar conflictos de versiones entre proyectos.

¿Qué palabra clave sigue a try para tratar una excepción en Python?

Respuesta : except

El bloque except se ejecuta cuando se lanza una excepción correspondiente dentro del bloque try; el resto del try queda entonces interrumpido.

¿Por qué escribir with open('notes.txt') as f en lugar de f = open('notes.txt')?

Respuesta : El archivo se cierra automáticamente al salir del bloque, incluso si hay un error

with usa un gestor de contexto: el archivo se cierra al salir del bloque, incluso si se produce un error.

Difícil

¿Qué devuelve la llamada a una función que contiene la palabra clave yield?

Respuesta : Un objeto generador, que produce los valores uno a uno bajo demanda

Una función con yield devuelve un generador: su cuerpo solo se ejecuta cuando se pide el valor siguiente.

¿Qué ocurre cuando se llama a next(it) sobre un iterador agotado, sin valor por defecto?

Respuesta : Lanza la excepción StopIteration

next() devuelve el elemento siguiente; si no queda ninguno, se lanza la excepción StopIteration, que señala el fin de la iteración y que el bucle for intercepta.

¿Qué es un decorador en Python?

Respuesta : Una función que recibe una función como argumento y devuelve una función modificada

Un decorador se aplica con @ encima de una función; un ejemplo clásico es un decorador que mide la duración de una llamada.

En CPython, la implementación de referencia de Python, ¿qué hace el GIL?

Respuesta : Solo permite que un hilo ejecute bytecode de Python a la vez

El GIL es el cerrojo del intérprete CPython: solo un hilo ejecuta bytecode de Python a la vez, lo que limita el paralelismo de los cálculos.

¿Qué hace la palabra clave await en una corrutina?

Respuesta : Suspende la corrutina a la espera de un awaitable, sin bloquear el bucle de eventos

await suspende la corrutina mientras el objeto esperado no esté listo, y el bucle de eventos puede ejecutar otras tareas mientras tanto.

¿Qué hace el intérprete de Python con una anotación de tipo como x: int = 'abc'?

Respuesta : Nada: la anotación no influye en la ejecución

Las anotaciones sirven a herramientas como mypy y a la legibilidad; el intérprete no las comprueba ni las convierte durante la ejecución.

¿Qué método especial llama len(obj)?

Respuesta : __len__

len(obj) llama al método __len__ definido en la clase del objeto, que debe devolver un entero.

¿Cuál es la diferencia entre copy.copy y copy.deepcopy en una lista de listas?

Respuesta : copy.copy solo duplica el primer nivel; deepcopy duplica también las sublistas

copy.copy crea un nuevo objeto externo, pero sus subobjetos siguen compartidos; deepcopy duplica también los objetos anidados.

Temas relacionados

Jugar a los quizzes de Python