linkedin-skill-assessments-quizzes

Python (Lenguaje de Programación)

Nota: Esta es una traducción al español del quiz de evaluación de habilidades Python de LinkedIn. Para la versión original en inglés, consulte python-quiz.md.


Q1. ¿Qué es una clase abstracta?

referencia

Q2. ¿Qué sucede cuando usas la función incorporada any() en una lista?

ejemplo

if any([True, False, False, False]) == True:
    print('Yes, there is True')
>>> 'Yes, there is True'

Q3. ¿A qué estructura de datos degenera un árbol binario si no está balanceado correctamente?

referencia

Q4. ¿Qué afirmación sobre los métodos estáticos es verdadera?

referencia

Q5. ¿Qué son los atributos?

Explicación: Los atributos se definen bajo la clase, y los argumentos van bajo las funciones. Los argumentos generalmente se refieren a parámetros, mientras que los atributos son los constructores de la clase o una instancia de la clase.

Q6. ¿Cuál es el término para describir este código?

count, fruit, price = (2, 'apple', 3.5)

Referencia

Q7. ¿Qué método incorporado de lista usarías para eliminar elementos de una lista?

Referencia

ejemplo

my_list = [1,2,3]
my_list.pop(0)
my_list
>>>[2,3]

Q8. ¿Cuál es uno de los usos más comunes de la librería sys de Python?

referencia

Q9. ¿Cuál es la complejidad temporal de acceder a un valor en un diccionario usando su clave?

Q10. ¿Cuál es la sintaxis correcta para definir una clase llamada Game, si hereda de una clase padre llamada LogicGame?

Explicación: La clase padre de la cual se hereda se pasa como argumento a la clase hija. Por lo tanto, la primera opción es la respuesta correcta.

Q11. ¿Cuál es el formato apropiado para escribir un doctest?

def sum(a, b):
    """
    sum(4, 3)
    7

    sum(-4, 5)
    1
    """
    return a + b
def sum(a, b):
    """
    >>> sum(4, 3)
    7

    >>> sum(-4, 5)
    1
    """
    return a + b
def sum(a, b):
    """
    # >>> sum(4, 3)
    # 7

    # >>> sum(-4, 5)
    # 1
    """
    return a + b
def sum(a, b):
    ###
    >>> sum(4, 3)
    7

    >>> sum(-4, 5)
    1
    ###
    return a + b

Explicación: Usa ''' para comenzar el doc y agrega la salida de la celda después de >>>

Q12. ¿Qué tipo de datos incorporado de Python se usa comúnmente para representar una pila?

Q13. ¿Qué devolvería esta expresión?

college_years = ['Freshman', 'Sophomore', 'Junior', 'Senior']
return list(enumerate(college_years, 2019))

Q14. ¿Cuál es el propósito de la palabra clave “self” al definir o llamar métodos de instancia?

Referencia

Ejemplo simple

class my_secrets:
    def __init__(self, password):
        self.password = password
        pass
instance = my_secrets('1234')
instance.password
>>>'1234'

Q15. ¿Cuál de estas características NO es una característica de los namedtuples?

Debemos importarlo usando: from collections import namedtuple

Q16. ¿Qué es un método de instancia?

Q17. ¿Qué declaración NO describe el concepto de encapsulación en programación orientada a objetos?

Referencia

Q18. ¿Cuál es el propósito de una declaración if/else?

Referencia

Q19. ¿Qué tipo de datos incorporado de Python es más adecuado para implementar una cola?

Q20. ¿Cuál es la sintaxis correcta para instanciar un nuevo objeto del tipo Game?

Referencia

Q21. ¿Qué hace la función incorporada map()?

Referencia

Explicación: - La sintaxis de la función map() es list(map(function,iterable)). Una calculadora simple de área usando map sería así

import math
radius = [1,2,3]
area = list(map(lambda x: round(math.pi*(x**2), 2), radius))
area
>>> [3.14, 12.57, 28.27]

Q22. Si no devuelves explícitamente un valor de una función, ¿qué sucede?

referencia. Cuando la declaración return es None o no tiene valor o no hay declaración return, la función devuelve None.

Q23. ¿Cuál es el propósito de la declaración pass en Python?

La declaración pass se usa como marcador de posición para código futuro. Cuando se ejecuta la declaración pass, no pasa nada, pero evitas obtener un error cuando no se permite código vacío. referencia

Q24. ¿Cuál es el término usado para describir los elementos que pueden pasarse a una función?

Q25. ¿Qué tipo de colección se usa para asociar valores con claves únicas?

Referencia

Q26. ¿Cuándo deja de iterar un bucle For?

Referencia

Q27. Asumiendo que el nodo está en una lista enlazada simple, ¿cuál es la complejidad temporal de buscar un nodo específico en una lista enlazada simple?

Q28. Dadas las siguientes tres listas, ¿cómo crearías una nueva lista que coincida con la salida deseada impresa abajo?

fruits = ['Apples', 'Oranges', 'Bananas']
quantities = [5, 3, 4]
prices = [1.50, 2.25, 0.89]

#Salida deseada
[('Apples', 5, 1.50),
('Oranges', 3, 2.25),
('Bananas', 4, 0.89)]
output = []

fruit_tuple_0 = (first[0], quantities[0], price[0])
output.append(fruit_tuple)

fruit_tuple_1 = (first[1], quantities[1], price[1])
output.append(fruit_tuple)

fruit_tuple_2 = (first[2], quantities[2], price[2])
output.append(fruit_tuple)

return output
i = 0
output = []
for fruit in fruits:
    temp_qty = quantities[i]
    temp_price = prices[i]
    output.append((fruit, temp_qty, temp_price))
    i += 1
return output
groceries = zip(fruits, quantities, prices)
return groceries

>>> [
('Apples', 5, 1.50),
('Oranges', 3, 2.25),
('Bananas', 4, 0.89)
]
i = 0
output = []
for fruit in fruits:
    for qty in quantities:
        for price in prices:
            output.append((fruit, qty, price))
    i += 1
return output

Q29. ¿Qué sucede cuando usas la función incorporada all() en una lista?

Referencia

Explicación: all() devuelve True si todos los elementos en la lista son True. Ver el ejemplo abajo:

test = [True, False, False, False]
if all(test) is True:
    print('Yeah, all of them are true.')
else:
    print('There is an imposter.')

>>> 'There is an imposter'

Q30. ¿Cuál es la sintaxis correcta para llamar un método de instancia en una clase llamada Game?

(El formato de respuesta puede variar. Game y roll (o dice_roll) deben ser llamados sin parámetros.)

>>> dice = Game()
>>> dice.roll()
>>> dice = Game(self)
>>> dice.roll(self)
>>> dice = Game()
>>> dice.roll(self)
>>> dice = Game(self)
>>> dice.roll()

Q31. ¿Cuál es el paradigma algorítmico del ordenamiento rápido (quick sort)?

El ordenamiento por mezcla y el ordenamiento rápido emplean un paradigma algorítmico común basado en la recursión. Este paradigma, dividir y conquistar, descompone un problema en subproblemas similares al problema original, resuelve recursivamente los subproblemas, y finalmente combina las soluciones de los subproblemas para resolver el problema original. referencia

Q32. ¿Cuál es la complejidad temporal del método incorporado .append() de la lista?

Esta función tiene una complejidad temporal constante, es decir, O(1), porque las listas son accesibles aleatoriamente, por lo que el último elemento puede alcanzarse en O(1), por eso el tiempo requerido para agregar el nuevo elemento al final de la lista es O(1).

Q33. ¿Cuál es la diferencia clave entre un set y una list?

Q34. ¿Cuál es la definición de abstracción aplicada a Python orientado a objetos?

La abstracción en Python se define como un proceso de manejar la complejidad ocultando información innecesaria al usuario. referencia

Q35. ¿Qué imprime esta función?

def print_alpha_nums(abc_list, num_list):
    for char in abc_list:
        for num in num_list:
            print(char, num)
    return

print_alpha_nums(['a', 'b', 'c'], [1, 2, 3])
a 1
a 2
a 3
b 1
b 2
b 3
c 1
c 2
c 3
['a', 'b', 'c'], [1, 2, 3]
aaa
bbb
ccc
111
222
333
a 1 2 3
b 1 2 3
c 1 2 3

Q36. Elige la representación correcta del doctest para una función en Python.

def sum(a, b):
    # a = 1
    # b = 2
    # sum(a, b) = 3

    return a + b
def sum(a, b):
    """
    a = 1
    b = 2
    sum(a, b) = 3
    """

    return a + b
def sum(a, b):
    """
    >>> a = 1
    >>> b = 2
    >>> sum(a, b)
    3
    """

    return a + b
def sum(a, b):
    '''
    a = 1
    b = 2
    sum(a, b) = 3
    '''
    return a + b

Explicación: Usa """ para comenzar y terminar el docstring y usa >>> para representar la salida. Si escribes esto correctamente, también puedes ejecutar el doctest usando el módulo doctest incorporado

Q37. Supongamos que una clase Game hereda de dos clases padre: BoardGame y LogicGame. ¿Qué afirmación es verdadera respecto a los métodos de un objeto instanciado de la clase Game?

Q38. ¿Qué devuelve la llamada de namedtuple en un tipo de colección?

Ejemplo

# la función namedtuple acepta los siguientes argumentos para generar una clase
from collections import namedtuple
>>> Point = namedtuple('Point',['x','y'])
>>> point = Point(100, 200)
>>> point
    Point(x=100, y=200)

# Lo que te permite usar tanto desempaquetado como iteración para acceder
>>> x, y = point
>>> print(f'({x}, {y})')
    (100, 200)
>>> for coordinate in point:
        print(coordinate)
    100
    200

Referencia

Q39. ¿Qué símbolo(s) usas para evaluar la igualdad entre dos elementos?

Q40. Examina el código abajo. ¿Cuál es la sintaxis correcta para cambiar el precio a 1.5?

fruit_info = {
  'fruit': 'apple',
  'count': 2,
  'price': 3.5
}

Q41. ¿Qué valor sería devuelto por esta verificación de igualdad?

5 != 6

Explicación: En Python, != es equivalente a no igual a.

Q42. ¿Qué hace el método __init__() de una clase?

Referencia

Ejemplo:

class test:
    def __init__(self):
        print('I came here without your permission lol')
        pass
t1 = test()
>>> 'I came here without your permission lol'

Q43. ¿Qué significa el término “complejidad espacial”?

Q44. ¿Cuál es la sintaxis correcta para crear una variable vinculada a un diccionario?

Q45. ¿Cuál es la forma apropiada de escribir una comprensión de lista que represente todas las claves de este diccionario?

fruits = {'Apples': 5, 'Oranges': 3, 'Bananas': 4}

Q46. ¿Cuál es el propósito de la palabra clave self al definir o llamar métodos en una instancia de un objeto?

Explicación: - Intenta ejecutar el ejemplo de Q42 sin pasar el argumento self en el __init__, entenderás la razón. Obtendrás el error como este __init__() takes 0 positional arguments but 1 was given, esto significa que algo entra aunque no se haya especificado, que es la instancia misma.

Q47. ¿Qué afirmación sobre los métodos de clase es verdadera?

Referencia
Los métodos de clase son métodos que se llaman en la clase misma, no en una instancia de objeto específica. Por lo tanto, pertenece a un nivel de clase, y todas las instancias de clase comparten un método de clase.

Q48. ¿Qué significa que una función tenga un tiempo de ejecución lineal?

Q49. ¿Cuál es la forma apropiada de definir una función?

El uso de guiones bajos como separadores de palabras se remonta a finales de los años 1960. Está particularmente asociado con C, se encuentra en The C Programming Language (1978), y contrasta con Pascal case (un tipo de camel case). Sin embargo, la convención tradicionalmente no tenía un nombre específico: la guía de estilo del lenguaje de programación Python simplemente se refiere a él como “lower_case_with_underscores”. En Usenet, el término snake_case se vio por primera vez en la comunidad Ruby en 2004, usado por Gavin Kistner, escribiendo: Por cierto… ¿cómo llamas a este estilo de nomenclatura? ¿snake_case? Así es como lo llamaré hasta que alguien me corrija.

referencia

Q50. Según las pautas de estilo de codificación PEP 8, ¿cómo deben nombrarse los valores constantes en Python?

Usa una letra mayúscula única, una palabra o palabras. Separa las palabras con guiones bajos para mejorar la legibilidad. Referencia

Q51. Describe la funcionalidad de una deque.

Deque o Double Ended Queue es una versión generalizada de la estructura de datos Queue que permite inserción y eliminación en ambos extremos. referencia

Q52. ¿Cuál es la sintaxis correcta para crear una variable vinculada a un conjunto?

Q53. ¿Cuál es la sintaxis correcta para definir un método __init__() que no toma parámetros?

class __init__(self):
    pass
def __init__():
    pass
class __init__():
    pass
def __init__(self):
    pass

Q54. ¿Cuál de las siguientes afirmaciones es VERDADERA sobre cómo se organizarían los datos numéricos en un árbol de búsqueda binaria?

En ciencias de la computación, un árbol de búsqueda binaria (BST), también llamado árbol binario ordenado o clasificado, es una estructura de datos de árbol binario enraizado con la clave de cada nodo interno siendo mayor que todas las claves en el subárbol izquierdo del nodo respectivo y menor que las de su subárbol derecho. referencia

Q55. ¿Por qué usarías un decorador?

Los decoradores nos permiten envolver otra función para extender el comportamiento de la función envuelta, sin modificarla permanentemente. referencia

Q56. ¿Cuándo usarías un bucle for?

Referencia

Q57. ¿Cuál es la forma más autodescriptiva de definir una función que calcule el impuesto de ventas en una compra?

def tax(my_float):
    ''' Calcula el impuesto de ventas de una compra. Toma un float que representa el subtotal como argumento y devuelve un float que representa el impuesto de ventas.'''
    pass
def tx(amt):
    ''' Obtiene el impuesto de una cantidad.'''
def sales_tax(amount):
    ''' Calcula el impuesto de ventas de una compra. Toma un float que representa el subtotal como argumento y devuelve un float que representa el impuesto de ventas.'''
def calculate_sales_tax(subtotal):
    pass

Q58. ¿Qué pasaría si no modificaras el estado del elemento en el que un algoritmo opera de forma recursiva?

explicación

Q59. ¿Cuál es la complejidad temporal de buscar un elemento en un árbol de búsqueda binaria?

explicación

Q60. ¿Por qué usarías un mixin?

Hay dos situaciones principales donde se usan los mixins: Quieres proporcionar muchas funcionalidades opcionales para una clase. Quieres usar una funcionalidad particular en muchas clases diferentes. referencia explicación

Q61. ¿Cuál es la complejidad temporal de agregar un elemento a una pila y eliminar un elemento de una pila?

Q62. ¿Qué declaración describe con precisión cómo se agregan y eliminan elementos de una pila?

Explicación: La pila usa el enfoque último en entrar, primero en salir (last in first out).

Q63. ¿Qué es un caso base en una función recursiva?

Q64. ¿Por qué se considera una buena práctica abrir un archivo desde un script Python usando la palabra clave with?

Es una buena práctica usar la palabra clave ‘with’ cuando se trata de objetos archivo. La ventaja es que el archivo se cierra correctamente después de que su suite termina, incluso si se lanza una excepción en algún punto. Usar with también es mucho más corto que escribir bloques try-finally equivalentes:

ejemplo

>>> f = open('workfile', 'w', encoding="utf-8")
>>> with open('workfile', encoding="utf-8") as f:
    read_data = f.read()
# Podemos verificar que el archivo se ha cerrado automáticamente.
>>> f.closed
True

Referencia

Q65. ¿Por qué usarías un entorno virtual?

Q66. ¿Cuál es la forma correcta de ejecutar todos los doctests en un archivo dado desde la línea de comandos?

También hay un atajo de línea de comandos para ejecutar testmod(). Puedes instruir al intérprete de Python para ejecutar el módulo doctest directamente desde la biblioteca estándar y pasar el/los nombre(s) de módulo en la línea de comandos: python -m doctest -v example.py Esto importará example.py como un módulo independiente y ejecutará testmod() en él. Ten en cuenta que esto puede no funcionar correctamente si el archivo es parte de un paquete e importa otros submódulos de ese paquete.
referencia
video tutorial

Q67. ¿Qué es una función lambda?

Referencia

Explicación:

La notación lambda es una función anónima que puede tomar cualquier número de argumentos con solo una expresión (es decir, no puede sobrecargarse). Ha sido introducida en otros lenguajes de programación, como C++ y Java. La notación lambda permite a los programadores “evitar” la declaración de función.

Q68. ¿Cuál es la diferencia principal entre listas y tuplas?

Referencia

Q69. ¿Qué devuelve un generador?

Q70. ¿Cuál es la diferencia entre atributos de clase y atributos de instancia?

Q71. ¿Cuál es la sintaxis correcta para crear un método de instancia?

def get_next_card():
  # cuerpo del método aquí
def get_next_card(self):
  # cuerpo del método aquí
def self.get_next_card():
  # cuerpo del método aquí
def self.get_next_card(self):
  # cuerpo del método aquí

Q72. ¿Cuál es la forma correcta de llamar una función?

Q73. ¿Cómo agregas un comentario a un script Python existente?

Referencia

Q74. ¿Cuál es la sintaxis correcta para reemplazar la cadena apple en la lista con la cadena orange?

my_list = ['kiwi', 'apple', 'banana']

Q75. ¿Qué pasará si usas un bucle while y olvidas incluir lógica que eventualmente detenga el bucle while?

Q76. Describe la funcionalidad de una cola (queue).

Q77. ¿Qué opción es el ejemplo sintácticamente más correcto de ramificación condicional?

num_people = 5

if num_people > 10:
    print("There is a lot of people in the pool.")
elif num_people > 4:
    print("There are some people in the pool.")
else:
    print("There is no one in the pool.")
num_people = 5

if num_people > 10:
    print("There is a lot of people in the pool.")
if num_people > 4:
    print("There are some people in the pool.")
else:
    print("There is no one in the pool.")
num_people = 5

if num_people > 10;
    print("There is a lot of people in the pool.")
elif num_people > 4;
    print("There are some people in the pool.")
else;
    print("There is no one in the pool.")
if num_people > 10;
    print("There is a lot of people in the pool.")
if num_people > 4;
    print("Hay algunas personas en la piscina.")
else;
    print("No hay nadie en la piscina.")

Q78. ¿Cómo funciona defaultdict?

defaultdict es un diccionario tipo contenedor presente en el módulo collections. La funcionalidad de los diccionarios y de defaultdict es casi la misma, excepto que defaultdict nunca lanza un KeyError. Proporciona un valor por defecto para la clave que no existe.

ejemplo

# Función para devolver un valor por defecto
# para claves que no están presentes
def def_value():
    return "Not Present"

# Definiendo el dict
d = defaultdict(def_value)

referencia

Q79. ¿Cuál es la sintaxis correcta para agregar una clave llamada variety al diccionario fruit_info que tiene un valor de Red Delicious?

Q80. ¿Cuándo usarías un bucle while?

Ejemplo Simple

i = 1
while i<6:
    print(f"Countdown: {i}")
    i = i + 1

Q81. ¿Cuál es la sintaxis correcta para definir un método __init__() que establece atributos específicos de instancia al crear una nueva instancia de clase?

def __init__(self, attr1, attr2):
    attr1 = attr1
    attr2 = attr2
def __init__(attr1, attr2):
    attr1 = attr1
    attr2 = attr2
def __init__(self, attr1, attr2):
    self.attr1 = attr1
    self.attr2 = attr2
def __init__(attr1, attr2):
    self.attr1 = attr1
    self.attr2 = attr2

Explicación: Al instanciar un nuevo objeto de una clase dada, el método __init__() tomará tanto attr1 como attr2, y establecerá sus valores a su atributo de objeto correspondiente, por eso necesitas usar self.attr1 = attr1 en lugar de attr1 = attr1.

Q82. ¿Qué imprimiría esta función recursiva si se llama sin parámetros?

def count_recursive(n=1):
    if n > 3:
        return
    print(n)

    count_recursive(n + 1)
1
1
2
2
3
3
3
2
1
3
3
2
2
1
1
1
2
3

Q83. En Python, al usar conjuntos, usas _ para calcular la intersección entre dos conjuntos y _ para calcular la unión.

Q84. ¿Qué devolverá este fragmento de código?

import numpy as np
np.ones([1,2,3,4,5])

Referencia

Q85. Te encuentras con una FileNotFoundException al usar solo el nombre del archivo en la función open. ¿Cuál podría ser la solución más simple?

Q86. ¿Qué devolverá este comando?

{x for x in range(100) if x%3 == 0}

referencia Es una Comprensión de Conjunto porque está entre ‘{}’, llaves, así que devolverá un ‘Conjunto’ !

Q87. ¿Qué permite hacer el operador // en Python 3?

Q88. ¿Qué archivo se importa para usar fechas en Python?

Q89. ¿Cuál es la sintaxis correcta para definir una clase llamada Game?

referencia aquí

Q90. ¿Cuál es la sintaxis correcta para llamar un método de instancia en una clase llamada Game?

Q91. ¿Cuál es la salida de este código? (NumPy ha sido importado como np.)

a = np.array([1,2,3,4])
print(a[[False, True, False, False]])

Q92. Supongamos que tienes una variable de cadena definida como y=”stuff;thing;junk;”. ¿Cuál sería la salida de este código?

z = y.split(';')
len(z)

Explicación:

y="stuff;thing;junk"
    len(z) ==> 3

y="stuff;thing;junk;"
    len(z) ==> 4

Q93. ¿Cuál es la salida de este código?

num_list = [1,2,3,4,5]
num_list.remove(2)
print(num_list)

Explicación: .remove() está basado en el valor del elemento, no en el índice; aquí, elimina el elemento que coincide con “2”. Si quisieras eliminar un elemento basado en su índice, usarías .pop().

num_list = [1,2,3,4,5]

num_list.pop(2)
>>> [1,2,4,5]

num_list.remove(2)
>>> [1,3,4,5]

Q94. ¿Qué comando creará una lista de 10 a 1? Ejemplo:

[10,9,8,7,6,5,4,3,2,1]

Referencia

Q95. ¿Qué fragmento de código imprimirá la misma salida que este fragmento?

import math
print(math.pow(2,10)) # imprime 2 elevado a la potencia 10
print(2^10)
print(2**10)
y = [x*2 for x in range(1,10)]
print(y)
y = 1
for i in range(1,10):
    y = y * 2
print(y)

Referencia

Q96. Los elementos rodeados de [] son _, {} son _, y () son _.

Referencia

Q97. ¿Cuál es la salida de este código? (NumPy ha sido importado como np.)

table = np.array([
    [1,3],
    [2,4]])
print(table.max(axis=1))

Referencia

Q98. ¿Qué imprimirá este código?

number = 3
print(f"The number is {number}")

Referencia

Q99. ¿Qué sintaxis crea correctamente una variable vinculada a una tupla?

Referencia

Q100. ¿Qué modo NO es una forma válida de acceder a un archivo desde un script Python?

  1. Referencia
  2. Referencia

Q101. NumPy te permite multiplicar dos arrays sin un bucle for. Esto es un ejemplo de _.

Q102. ¿Qué tipo de datos incorporado de Python puede usarse como tabla hash?

Q103. ¿Qué función Python te permite ejecutar comandos shell de Linux en Python?

Q104. Supongamos que tienes el siguiente fragmento de código y quieres extraer una lista con solo las letras. ¿Qué fragmento de código NO logrará ese objetivo?

my_dictionary = {
    'A': 1,
    'B': 2,
    'C': 3,
    'D': 4,
    'E': 5
}
letters = []

for letter in my_dictionary.values():
    letters.append(letter)

Explicación: El primero (la opción correcta) devuelve la lista de los valores (los números). El resto de las opciones devuelven una lista de las claves.

Q105. Cuando un array es grande, NumPy no imprimirá todo el array cuando se le da la función incorporada print. ¿Qué función puedes usar dentro de NumPy para forzarlo a imprimir todo el array?

Q106. ¿Cuándo usarías un bloque try/except en el código?

Referencia

Q107. En Python, ¿cómo puede el compilador identificar el bloque interno de un bucle for?

Q108. ¿Qué mecanismo Python es más adecuado para decirle a un usuario que está usando una función obsoleta?

Q109. ¿Cuál será el valor de x después de ejecutar este código?

x = {1,2,3,4,5}
x.add(5)
x.add(6)

Explicación: El método .add() agrega el elemento al conjunto solo si no existe.

Q110. ¿Cómo accederías y almacenarías todas las claves de este diccionario de una vez?

fruit_info = {
    'fruit': 'apple',
    'count': 2,
    'price': 3.5
}

Q111. ¿Qué está mal con esta definición de función?

def be_friendly(greet = "How are you!", name):
    pass

Q112. Dado que NumPy se importa como np, ¿qué opción devolverá True?

a = np.zeros([3,4])
b = a.copy()
np.array_equal(a,b)
a = np.empty([3,4])
b = np.empty([3,4])
np.array_equal(a,b)
a = np.zeros([3,4])
b = np.zeros([4,3])
np.array_equal(a,b)
a = np.array([1, np.nan])
np.array_equal(a,a)

Q113. ¿Cómo agregas un comentario a un script Python existente?

Q114. En este fragmento de código, ¿a qué serán equivalentes los valores de c y d?

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = a*b
d = np.dot(a,b)
c = [ a[1] * b[1], a[2] * b[2], a[3] * b[3] ]
d = sum(c)
c = a[0] * b[0], a[1] * b[1], a[2] * b[2]

d = [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ]
c = [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ]

d = sum(a) + sum(b)
c = [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ]

d = sum(c)

Q115. ¿Qué dos funciones dentro de la biblioteca NumPy podrías usar para resolver un sistema de ecuaciones lineales?

Explicación: Entender esta respuesta requiere conocimiento de álgebra lineal. Algunos sistemas de ecuaciones pueden resolverse mediante el método de diagonalización, que implica encontrar los vectores propios y valores propios de la matriz del sistema y multiplicar matrices relacionadas.

Q116. ¿Cuál es la sintaxis correcta para crear una variable vinculada a una lista?

Referencia

Q117. Este código proporciona el _ de la lista de números.

num_list = [21, 13, 19, 3, 11, 5, 18]
num_list.sort()
num_list[len(num_list) // 2]

Explicación: // es el operador de división entera, que es una operación de división normal que devuelve el entero más grande posible, menor o igual al resultado de la división normal. Aquí se usa para encontrar la mediana, que es el valor que separa la mitad superior de la mitad inferior de una muestra de datos, encontrando el índice del elemento de la lista en el medio de la lista. (Esto es suficiente para una lista con un número impar de elementos; si la lista tuviera un número par de elementos, promediarías los valores de los dos elementos del medio para encontrar el valor de la mediana.)

Q118. ¿Cuáles son las dos principales estructuras de datos en la biblioteca Pandas?

Referencia

Q119. Supongamos que tienes una variable llamada vector de tipo np.array con 10,000 elementos. ¿Cómo puedes convertir vector en una variable llamada matrix con dimensiones 100x100?

Referencia

Q120. ¿Qué opción es un tipo de datos inmutable?

Referencia

Q121. ¿Cuál es la salida de este código?

def myFunction(country = "France"):
    print(f"Hello, I am from {country}")

myFunction("Spain")
myFunction("")
myFunction()
Hello, I am from Spain
Hello, I am from
Hello, I am from
Hello, I am from France
Hello, I am from France
Hello, I am from France
Hello, I am from Spain
Hello, I am from
Hello, I am from France
Hello, I am from Spain
Hello, I am from France
Hello, I am from France

Q122. Elige la opción abajo para la cual no se puede crear una instancia de la clase.

Referencia

Q123. Usando Pandas, cargamos un conjunto de datos de Kaggle, estructurado como en la imagen abajo. ¿Qué comando devolverá el número total de sobrevivientes?

Q129

Explicación: El titanic['Survived'] devuelve un objeto pandas.Series, que contiene la columna Survived del DataFrame. Sumar los valores de esta columna (es decir, sum(titanic['Survived'])) devuelve el número total de sobrevivientes ya que un sobreviviente está representado por un 1 y una pérdida por 0.

Q124. ¿Cómo crearías una lista de tuplas que coincida con estas listas de personajes y actores?

characters = ["Iron Man", "Spider Man", "Captain America"]
actors = ["Downey", "Holland", "Evans"]

# salida ejemplo : [("IronMan", "Downey"), ("Spider Man", "Holland"), ("Captain America", "Evans")]

Q125. ¿Qué devolverá esta declaración?

{x : x*x for x in range(1,100)}

Q126. La Similaridad de Jaccard es una fórmula que te dice qué tan similares son dos conjuntos. Se define como la cardinalidad de la intersección dividida por la cardinalidad de la unión. ¿Qué opción es una implementación precisa en Python?

Q132

Referencia

Q127. ¿Qué opción NO es un tipo numérico nativo en Python?

Q128. ¿Cuál será la salida de este código?

[1,2,3] * 3

Q129. Dada una lista definida como numbers = [1,2,3,4], ¿cuál es el valor de numbers[-2]?

Q130. ¿Qué afirmación sobre las cadenas en Python es verdadera?

Q131. ¿Cuál es la sintaxis correcta para definir un método __init__() que no toma parámetros?

() - parámetro vacío. self - se refiere a todas las instancias dentro de una clase. __init__ - un método reservado, también conocido como constructor. __init__() - siempre se ejecuta cuando se inicia la clase.

Q132. Supongamos que necesitas usar la función sin de la biblioteca math. ¿Cuál es la sintaxis correcta para importar solo esa función?

Q133. ¿Cuál es la sintaxis correcta para crear una variable vinculada a un conjunto?

Q134. ¿Cuál es el resultado de este código?

import numpy as np
a = np.array([1, 2, 3])
print(a[1])

Q135. ¿Cuál es la sintaxis correcta para crear una variable vinculada a un diccionario?

Q136. A menudo es el caso que la biblioteca pandas se usa para datos _ y NumPy para datos _.

Explicación: La biblioteca Pandas se usa comúnmente para trabajar con datos tabulares, como datos en forma de tablas o hojas de cálculo. Proporciona estructuras de datos y funciones para manipulación y análisis de datos. Por otro lado, NumPy es una biblioteca poderosa para computación numérica en Python, y a menudo se usa para realizar operaciones matemáticas en datos numéricos, como arrays y matrices.

Q137. ¿Qué necesitas hacer para instalar paquetes adicionales en Python?

Q138. La imagen abajo fue creada usando Matplotlib. Es un gráfico de distribución de una lista de enteros llenos con números usando la función _ y graficado con _.

Q132

Referencia

Q139. En este fragmento de código, ¿cuáles serán los valores de a y b?

import numpy as np

a = np.arange(100)
b = a[50:60:2]

Q140. Al usar NumPy en Python, ¿cómo verificas la dimensionalidad (número y longitud de dimensiones) de un objeto llamado my_object?

Q141. Asume que tienes una lista no vacía llamada mylist y quieres buscar un valor específico. El número mínimo de comparaciones será _ y el número máximo de comparaciones será _.

Explicación: Puedes usar una declaración break y el valor que se busca puede ser el primer elemento de la lista, dado que no está vacía.

Q142. Si una función no tiene una declaración return, ¿qué devuelve?

Q143. Supongamos que quieres verificar si dos matrices pueden multiplicarse usando NumPy para propósitos de depuración. ¿Cómo completarías este fragmento de código llenando los espacios en blanco con las variables apropiadas?

import numpy as np

def can_matrices_be_multiplied (matrix1, matrix2):
    rowsMat1, columnsMat1 = matrix1.shape
    rowsMat2, columnsMat2 = matrix2.shape

    if _____ == ______ :
        print("Las matrices pueden multiplicarse!")
        return True
    else:
        return False

referencia. Una matriz puede multiplicarse por cualquier otra matriz que tenga el mismo número de filas que la primera tiene columnas. Es decir, una matriz con 2 columnas puede multiplicarse por cualquier matriz con 2 filas

Q144. ¿Cuál es la salida de esta comprensión?

[(x, x+1) for x in range(1,5)]

Q145. En Python, un método de clase debe tener _ como decorador de función, y el primer parámetro del método será una referencia a _.

Referencia

Q146. ¿Qué fragmento de código imprimirá My name is Joffrey, son of Robert?

class Father():
    name = 'Robert'

class Person(Father):
    def __init__(self, name):
        self.fathername = super.name
        self.name = name

    def introduce(self):
        print(f"My name is {self.name} son of {self.fathername}")

king = Person("Joffrey")
king.introduce()

class Father():
    name = 'Robert'


class Person(Father):
    def __init__(self, name):
        self.fathername = self.name
        self.name = name

    def introduce(self):
        print(f"My name is {self.name} son of {self.fathername}")


king = Person("Joffrey")
king.introduce()

class Father():
    name = 'Robert'


class Person(Father):
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print(f"My name is {self.name} son of {super.name}")

king = Person("Joffrey")
king.introduce()
class Father():
    name = 'Robert'

class Person(Father):
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print(f"My name is {self.name} son of {base.name}")

king = Person("Joffrey")
king.introduce()

Explicación: En el primero, super no tiene .name (debería ser self.name). El tercero pierde Robert, y base no está definido en el cuarto.

Q147. ¿Qué salida produce este código en la consola, asumiendo que defaultdict ya ha sido importado?

animals = {
    'a': ['ant', 'antelope', 'armadillo'],
    'b': ['beetle', 'bear', 'bat'],
    'c': ['cat', 'cougar', 'camel']
}

animals = defaultdict(list, animals)

print(animals['b'])
print(animals['d'])
      ['beetle', 'bear', 'bat']
      []
      ['beetle', 'bear', 'bat']
      # se lanzará una excepción
      ['beetle', 'bear', 'bat']
      None
      ['bat', 'bear', 'beetle']
      []

Explicación: Los diccionarios usualmente resultan en una excepción cuando se usa la sintaxis de corchetes cuadrados. Defaultdict aquí devuelve un valor por defecto dedicado por el primer parámetro, así que en lugar de lanzar una excepción, devuelven el valor por defecto. Nota que esto necesita importarse como sigue: from collections import defaultdict

Referencia

Q148. ¿Qué devolverá esta línea de código? (Asume que n ya está definido como cualquier valor entero positivo.)

[x*2 for x in range(1,n)]

Referencia

Q149. ¿Qué imprime este código en la consola?

x = 18

if x > 10:
    if x > 15:
        print('A')
    else:
        print('B')
else:
    print('C')

Q150. ¿Cuál es la longitud máxima de un identificador Python?

referencia No se especifica una longitud fija pero Pep-8 especifica bajo “Longitud Máxima de Línea” “Limitar todas las líneas a un máximo de 79 caracteres”.

Q151. ¿Cuál será el valor de la variable i cuando el siguiente bucle termine su ejecución?

for i in range(5): pass

Q152. Los f-strings también se llaman:

Q153. ¿Cuántos CPUs (o núcleos) aprovechará simultáneamente la biblioteca de threading de Python?

Explicación: El threading de Python está restringido a un solo CPU a la vez. La biblioteca multiprocessing te permitirá ejecutar código en diferentes procesadores.

Q154. ¿Cuál será el valor de y en este código?

x = 5
y = 1 + (20 if x < 5 else 30)

Referencia

Explicación: Si tienes solo una declaración para ejecutar, una para if y una para else, puedes ponerlo todo en la misma línea.

x = 5
# Esta es la misma declaración expandida a múltiples líneas
y = 1
if (x < 5):
    y += 20
else:
    y += 30

Q155. ¿El proceso de pickling en Python incluye?

referencia
“Pickling” es el proceso por el cual una jerarquía de objetos Python se convierte en un flujo de bytes, y “unpickling” es la operación inversa, por la cual un flujo de bytes (de un archivo binario u objeto tipo bytes) se convierte de vuelta en una jerarquía de objetos.

Q156. ¿Cuál es la salida del siguiente programa?

print("codescracker".endswith("er"))

Q157. ¿Es la lista mutable en Python?

Q158. ¿Cuál es la salida del siguiente programa?

print("programming".center())

referencia. El método center() alineará al centro la cadena, usando un carácter especificado (el espacio es el predeterminado) como carácter de relleno.
Sintaxis: string.center(length, character) donde length es requerido!

Q159. ¿Quién creó el lenguaje de programación Python?

Q160. ¿Qué colección está ordenada, es modificable y permite miembros duplicados?

Q161. ¿Qué se imprimirá en la consola si ejecutas este código?

x = 1j
print(x**2 == -1)

Explicación: La letra j actúa como la unidad imaginaria en Python, por lo tanto x**2 significa j**2 que es igual a -1. La declaración x**2 == -1 se evalúa como True.

Q162. ¿Qué se imprimirá en la consola si ejecutas este código?

print(0xA + 0xB + 0xC)

Explicación: A, B y C son enteros hexadecimales con valores 10, 11 y 12 respectivamente, así que la suma de A, B y C es 33.

Q163. ¿Qué salida produce este código en la pantalla?

for i in range(5):
    print(i)
else:
    print("Done!")
1
2
3
4
5
Done!
0
1
2
3
4
5
Done!
0
1
2
3
4
Done!

Q164. ¿Qué comparación de listas y tuplas en Python es correcta?

Referencia

Q165. Considera el siguiente fragmento de código que usa decoradores para calcular el tiempo de ejecución de la función execution_fn:

import functools
import time

def timer(MISSING_ARG_1):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start_time = time.perf_counter()
        rval = func(*args, **kwargs)
        end_time = time.perf_counter()
        duration = end_time - start_time
        print(f"Executed in {duration:.4f} seconds")
        return MISSING_ARG_2
    return MISSING_ARG_3

@timer
def execution_fn():
    for i in range(3):
        time.sleep(1)

execution_fn()

¿Cuál de las siguientes opciones son los argumentos faltantes?

MISSING_ARG_1 = wrapper

MISSING_ARG_2 = rval

MISSING_ARG_3 = func
MISSING_ARG_1 = func

MISSING_ARG_2 = rval

MISSING_ARG_3 = wrapper
MISSING_ARG_1 está vacío

MISSING_ARG_2 = rval

MISSING_ARG_3 = wrapper
MISSING_ARG_1 está vacío

MISSING_ARG_2 = rval

MISSING_ARG_3 = func

Q166. ¿Cuál de las siguientes declaraciones define un nuevo tipo de objeto llamado Dog en Python?

Q167. Para usar pipelines en scikit-learn, importa del submódulo scikit-learn.\_.

referencia La sintaxis correcta es en realidad: from sklearn.pipeline import Pipeline

Q168. Debes pasar un valor de _ para el argumento axis al método apply de Pandas para aplicar la función a cada fila.

Q169. Los puntos de datos en Pyplot se llaman…

Q170. ¿Qué imprime este código?

a = np.array([[1, 2], [3, 4], [5, 6]])
c = a[(a > 3) & (a < 11)]
print(c)

Q171. Asume que m, n, y p son enteros positivos. En la siguiente comprensión, ¿cuántas veces se llamará la función randint?

[ [ [ randint(1,100) for i in range(m) ] for j in range(n) ] for k in range(p) ]

Q172. Supongamos que tienes una clase llamada MyClass que tiene herencia múltiple y métodos con el mismo nombre en sus ancestros. ¿Qué método de clase podrías llamar para ver qué método tendrá prioridad cuando sea invocado?

Explicación: MRO significa Method Resolution Order (Orden de Resolución de Métodos). Devuelve una lista de tipos de los cuales la clase se deriva, en el orden en que se buscan los métodos.

Q173. Supongamos que tienes una lista de empleados descrita por el código abajo. Quieres asignar a Alice el mismo salario que Charlie. ¿Qué opción logrará eso?

employees = {
    'alice':{
        'position':'Lead Developer',
        'salary':1000
    },
    'bob':{
        'position': 'Lead Artist',
        'salary':2000
    },
    'charlie':{
        'position':'cfo',
        'salary':3000
    }
}

Explicación: Esto es acceder a una clave en un diccionario anidado dentro de otro diccionario. El comando employees['alice']['salary'] = employees['charlie']['salary'] asigna el valor de la clave salary en el diccionario del empleado charlie al valor de la clave salary en el diccionario del empleado alice.

Q174. Te dan este fragmento de código. Asume que m y n ya están definidos como algún valor entero positivo. Cuando se complete, ¿cuántas tuplas contendrá mi lista?

mylist = []

for i in range(m):
    for j in range(n):
        mylist.append((i,j))

Explicación: Este código se ejecutará m x n veces, si ejecutas este código, creará m x n tuplas.

El primer bucle se ejecuta m veces y el bucle interno se ejecutará n veces. La única iteración del primer bucle solo se completará cuando todas las n iteraciones de un bucle interno se hayan completado. Este es el mismo proceso para la 2da, y 3ra, … m-ésima iteraciones para el bucle externo. En general, ambos bucles se ejecutarán m x n veces.

Q175. ¿Qué te proporcionará esta comprensión?

{x : [y for y in range (1, x) if x % y == 0] for x in range (2, 100)}

Q176. ¿Cuál es un uso común de la biblioteca sys de Python?

Q177. ¿Cuál es la salida de 17 % 15?

Q178. Sean las listas ‘characters’ y ‘actors’ definidas como se da. ¿Cuál de las siguientes líneas de código da la salida deseada?

characters = ["Iron Man", "Spider Man", "Captain America"]
actors = ["Downey", "Holland", "Evans"]

#Salida deseada : [("Iron Man", "Downey"), ("Spider Man", "Holland"), ("Captain America", "Evans")]

Explicación: zip() es la función correcta para este caso de uso. Sin embargo, zip() hace un objeto tipo zip que es un iterador. Por lo tanto, usar list() es necesario para convertir el objeto zip en una lista de tuplas que puede mostrarse o accederse directamente. Las otras opciones tienen errores lógicos.

Q179. ¿Cuándo se ejecuta el bloque if __name__ == "__main__": en un script Python?

El bloque if __name__ == "__main__": se ejecuta cuando el script se ejecuta directamente pero no cuando se importa como módulo en otro script. referencia

Q180. ¿Cuál será la salida del siguiente código Python?

def square(x):
    return x * x

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
result = list(squared_numbers)
print(result)

El código define una función square para calcular el cuadrado de un número. Luego usa la función map para aplicar esta función a cada elemento en la lista numbers, resultando en un nuevo iterable. Finalmente, el constructor list se usa para convertir este iterable en una lista. La salida será una lista de números al cuadrado. referencia

Q181. ¿Cuál de las siguientes NO es una función incorporada válida en Python?

Fuente

Q182. ¿Cuál de los siguientes NO es un tipo de datos válido en Python?

Q183. En Python, ¿qué función se usa para leer una línea de la entrada de consola?

Referencia

Q184. ¿Cuál será la salida del siguiente código Python?

print("Hello {name1} and {name2}".format(name1='foo', name2='bin'))

Q185. ¿Cuál será la salida del siguiente fragmento de código?

def outer_func(x):
    y = x + 1
    def inner_func():
        return y + x
    return inner_func

x = 10
y = 20
closure_func = outer_func(x)
print(closure_func())

Explicación: Cuando se llama outer_func(10), y se establece en 11 dentro de outer_func. La inner_func, que tiene acceso al ámbito de outer_func, devuelve y + x. Cuando se llama closure_func(), usa y = 11 (de outer_func) y x = 10 del ámbito global, no del argumento de la función. Por lo tanto, closure_func() devuelve 11 + 10 = 21.

Q186. ¿Cuál es la salida del siguiente código Python?

x = 5
def func():
    x = 10
    print(x)
func()
print(x)

Explicación: La respuesta correcta es 10, 5.

En el código dado, la variable x se define primero en el ámbito global con un valor de 5. Dentro de la función func(), se crea una nueva variable local x y se le asigna el valor de 10. Cuando se llama func(), imprime el valor de la x local, que es 10.

Después de la llamada a la función, la declaración print fuera de la función se refiere a la x global, que aún tiene el valor de 5.

Por lo tanto, la salida es 10, 5.

Q187. ¿Cuál es la salida del siguiente código Python?

def func(a, b=2, c=3):
    print(a, b, c)

func(10)
func(10, 20)
func(10, 20, 30)

Explicación: La respuesta correcta es 10 2 3, 10 20 3, 10 20 30.

En el código dado, la función func() tiene tres parámetros: a, b, y c. b y c tienen valores por defecto de 2 y 3, respectivamente.

Cuando se llama func(10), solo se proporciona el primer parámetro a, así que b y c toman sus valores por defecto de 2 y 3, respectivamente.

Cuando se llama func(10, 20), el primer parámetro a es 10, y el segundo parámetro b es 20. El tercer parámetro c toma su valor por defecto de 3.

Cuando se llama func(10, 20, 30), se proporcionan los tres parámetros, así que a es 10, b es 20, y c es 30.

Por lo tanto, la salida es: 10 2 3 10 20 3 10 20 30

Q188. ¿Cuál es la salida del siguiente código Python?

x = [1, 2, 3]
y = x
y.append(4)
print(x)

Explicación: La respuesta correcta es [1, 2, 3, 4].

En Python, asignar y = x no crea una nueva lista; tanto x como y se refieren al mismo objeto en memoria. Así que cuando llamamos y.append(4), modifica la lista original a la que ambas variables apuntan. Por lo tanto, imprimir x mostrará la lista actualizada [1, 2, 3, 4].

Q189. ¿Cuál es la salida del siguiente código Python?

def add_item(item, item_list=[]):
    item_list.append(item)
    return item_list

print(add_item(1))
print(add_item(2))
print(add_item(3, []))

Explicación: La respuesta correcta es [1] [1, 2] [3].

En Python, los argumentos mutables por defecto (como las listas) se evalúan solo una vez cuando se define la función — no cada vez que se llama. Eso significa que las primeras dos llamadas a add_item() comparten la misma lista por defecto, así que acumula valores [1] y luego [1, 2].

Sin embargo, en la tercera llamada add_item(3, []), pasamos una nueva lista vacía, así que crea una lista separada [3].

Q190. ¿Qué método se usa para implementar la función len() para una clase personalizada?

Referencia Métodos Especiales

Q191. ¿Qué producirá este código?

def decorator(func):
    def wrapper(*args, **kwargs):
        print("Before function call")
        result = func(*args, **kwargs)
        print("After function call")
        return result
    return wrapper

@decorator
def greet(name):
    print(f"Hello, {name}!")

greet("Alice")

Q192. ¿Qué afirmación sobre los generadores de Python es correcta?

Q193. ¿Cuál es la salida de este código?

class Parent:
    def method(self):
        print("Parent method")

class Child(Parent):
    def method(self):
        super().method()
        print("Child method")

obj = Child()
obj.method()

Q194. ¿Qué método se usa para implementar la representación de cadena para depuración?

Q195. ¿Qué producirá este código?

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))
print(fibonacci.cache_info())