22 Oct

Preguntas y respuestas sobre Python

Tipado y variables

1. ¿Qué significa que Python sea de tipado dinámico? Da un ejemplo.

Respuesta. El tipo de una variable no se declara. Lo determina el valor que tiene en cada momento, y puede cambiar. Por ejemplo, x = 5 y luego x = "cinco".

2. Python distingue mayúsculas de minúsculas. ¿Qué significa eso para las variables edad y Edad? Incluí un ejemplo.

Respuesta. Son dos variables distintas. Por ejemplo, si definís Edad = 20 y luego intentás usar edad sin haberla definido, Python produce un NameError.

3. ¿Qué devuelve float("3")? ¿Cómo convertirías el string "3.7" a un entero?

Respuesta. float("3") devuelve 3.0. Para pasar "3.7" a entero hay que hacerlo en dos pasos, int(float("3.7")), que da 3. Si se usa int("3.7") directamente da ValueError.

4. ¿Por qué no conviene llamar a una variable print, sum o list? Incluí un ejemplo.

Respuesta. Porque se pisa la función integrada que tiene ese nombre. Si hacemos print = 10, después print("hola") da TypeError, porque print pasó a ser un número.

5. ¿Cuál es la diferencia entre = y ==? Incluí un ejemplo de cada caso.

Respuesta. = asigna un valor: x = 5. == compara valores: x == 5 devuelve True.

6. ¿De qué tipo es el resultado de 3 + 2.0? ¿Y el de 6 / 3? Explicá por qué.

Respuesta. Los dos dan float, 5.0 y 2.0. Al combinar un int con un float, Python convierte todo a float para no perder decimales, y el operador / siempre devuelve float, aunque la división sea exacta.

Operadores y expresiones

7. ¿Qué imprime el siguiente código? Marcá la opción correcta.

print(5 + 3 * 2 > 10 and 4 % 2 == 0)

a) True   b) False   c) 11   d) Error

Respuesta. a) True. Primero se resuelve lo aritmético (5 + 6 = 11), después las comparaciones (11 > 10 es True y 0 == 0 es True) y al final el and. El orden es aritméticos, después comparación y por último lógicos.

Cadenas de texto

8. ¿Qué hace split()? ¿Qué devuelve "hola mundo".split()?

Respuesta. Separa un string en partes y devuelve una lista. Sin argumentos corta por los espacios, así que en este caso devuelve ['hola', 'mundo'].

9. ¿Qué hace strip()? ¿Elimina también los espacios del medio?

Respuesta. Sin argumentos, elimina caracteres de espacio en blanco del principio y del final, como espacios, tabulaciones y saltos de línea. No modifica los del medio; por ejemplo, " a b ".strip() devuelve "a b".

10. ¿Qué hacen upper() y lower()? ¿Para qué son útiles al comparar textos? Incluí un ejemplo.

Respuesta. Pasan todo el texto a mayúsculas o a minúsculas. Sirven para comparar sin que importen las mayúsculas, por ejemplo resp.lower() == "si".

Listas y tuplas

11. ¿Qué hace append()? ¿Devuelve algo? Mostralo con un ejemplo.

Respuesta. Agrega un elemento al final de la lista y devuelve None. Por ejemplo, lista = [1, 2]; lista.append(3) deja la lista como [1, 2, 3].

12. ¿Qué hace insert(i, x)? Incluí un ejemplo.

Respuesta. Inserta x en la posición i. Por ejemplo, lista = [1, 3]; lista.insert(1, 2) deja lista como [1, 2, 3].

13. ¿En qué se diferencia una lista de una tupla? Incluí un ejemplo de cada una.

Respuesta. La lista se escribe con corchetes y es mutable: se le pueden agregar, quitar o cambiar elementos. La tupla se escribe con paréntesis y es inmutable: una vez creada no se puede modificar. Por ejemplo [1, 2] y (1, 2).

Bucles

14. ¿Qué diferencia hay entre recorrer una lista con for x in lista y con for i in range(len(lista))? ¿Cuándo conviene cada uno? Incluí un ejemplo de cada caso.

Respuesta. Con lista = [10, 20], for x in lista: print(x) recorre directamente los valores. En cambio, for i in range(len(lista)): print(i, lista[i]) recorre los índices. Conviene la primera forma si solo necesitás los elementos y la segunda si necesitás su posición.

15. ¿Qué imprime el siguiente código? Marcá la opción correcta.

for i in range(3):
    print("*" * (i + 1))

a) *, ** y ***, uno por línea   b) *** tres veces   c) * y **, uno por línea   d) *** una sola vez

Respuesta. a) *, ** y ***, uno por línea. En cada iteración imprime una estrella más, formando una escalera.

16. ¿Qué imprime el siguiente código?

n = 5
while n > 0:
    print(n)
    n -= 2

Respuesta. 5, 3 y 1, uno por línea. Cuando n llega a -1 la condición deja de cumplirse y el bucle termina.

17. ¿Qué pasa al ejecutar el siguiente código? Marcá la opción correcta.

x = 5
while x > 0:
    print(x)
x -= 1

a) Imprime 5 4 3 2 1   b) Imprime 5 y termina   c) Bucle infinito imprimiendo 5   d) Error

Respuesta. c) Bucle infinito imprimiendo 5. La línea x -= 1 quedó fuera del bucle por la indentación, así que x nunca cambia y la condición siempre se cumple.

Diccionarios

18. ¿Qué es un diccionario y en qué se diferencia de una lista? Incluí un ejemplo de cada estructura.

Respuesta. Un diccionario guarda pares clave–valor y se consulta por clave; por ejemplo, {"Ana": 8}. Una lista guarda elementos por posición; por ejemplo, [8, 5].

19. ¿Pueden repetirse las claves? ¿Y los valores? ¿Qué contiene d = {"a": 1, "a": 2}?

Respuesta. Las claves son únicas, pero los valores se pueden repetir. d queda {"a": 2}, porque la última asignación pisa a la anterior.

20. ¿Qué imprime el siguiente código?

notas = {"Ana": 8, "Luis": 5}
notas["Ana"] = 10
notas["Sol"] = 7
print(len(notas), notas["Ana"])

Respuesta. 3 10. Asignar a una clave que ya existe cambia su valor, y asignar a una clave nueva la agrega al diccionario.

21. ¿Qué recorre for x in d:? ¿Cómo recorrerías claves y valores a la vez? Incluí un ejemplo.

Respuesta. Recorre las claves. Por ejemplo, con d = {"a": 1}, for x in d: print(x) imprime a. Para recorrer ambos: for k, v in d.items(): print(k, v).

22. ¿Qué devuelven keys(), values() e items()? Incluí un ejemplo de cada método.

Respuesta. Con d = {"a": 1}, d.keys() devuelve las claves, d.values() los valores y d.items() los pares: ["a"], [1] y [("a", 1)] al convertirlos a lista.

Funciones

23. ¿Para qué sirven las funciones? Nombrá dos ventajas. Incluí un ejemplo sencillo.

Respuesta. Permiten reutilizar código y organizarlo en partes fáciles de probar. Ejemplo: def doble(x): return x * 2; entonces doble(3) devuelve 6.

24. ¿Qué es una función integrada? Nombrá cuatro que hayamos usado.

Respuesta. Es una función que ya viene disponible en Python y no hay que definirla. Cuatro ejemplos son print(), len(), type() y sum().

NumPy

25. ¿Qué hacen np.zeros(), np.ones() y np.arange()? Incluí un ejemplo de cada función.

Respuesta. np.zeros(3) crea un array de tres ceros: array([0., 0., 0.]); np.ones(2) crea uno de dos unos: array([1., 1.]); y np.arange(1, 4) crea valores desde 1 hasta antes de 4: array([1, 2, 3]).

26. ¿Qué hacen .sum(), .mean(), .max() y .min() sobre un array? Aplicalo a un array de ejemplo.

Respuesta. Calculan suma, promedio, máximo y mínimo. Si a = np.array([1, 2, 3]), entonces a.sum() da 6, a.mean() da 2.0, a.max() da 3 y a.min() da 1.

27. ¿Qué hace .reshape()? ¿Qué condición tiene que cumplirse? Incluí un ejemplo válido.

Respuesta. Cambia la forma del array sin alterar sus elementos. La nueva forma debe tener la misma cantidad total de posiciones que el array original. Por ejemplo, np.arange(6).reshape(2, 3) es válido porque el array tiene 6 elementos y 2 × 3 = 6.

28. ¿Qué diferencia hay entre np.arange() y np.linspace()? Incluí un ejemplo de cada una.

Respuesta. np.arange(0, 5, 2) usa un paso y devuelve [0, 2, 4]. np.linspace(0, 1, 3) usa una cantidad de puntos y devuelve [0., 0.5, 1.], incluyendo el final.