2 cuestionario fp
|
|
Título del Test:
![]() 2 cuestionario fp Descripción: practica examen |



| Comentarios |
|---|
NO HAY REGISTROS |
|
Empareje cada descripción con el método mágico correspondiente. define el comportamiento del operador mayor o igual >=. define el comportamiento del operador menor que <. define el comportamiento del operador de desigualdad !=. define el comportamiento del operador de igualdad ==. define el comporamiento del operador menor o igual <=. define el comportamiento del operador mayor que >. Qué decorador debemos usar para sobrecargar automáticametne en una clase todos los operadores de comparación definiendo solo el método __eq__ y otro de los métodos de comparación enriquecida?. ¿Qué método mágico implementa el comportamiento del operador unario -? Seleccione una: __minus__(self). __invert__(self). __neg__(self). Empareje cada operador binario con el método mágico correspondiente. -. /. *. +. ¿Cuál es el nombre del método de operador reflejado correspondiente al operador de división /?. Python permite tener dos funciones diferentes con el mismo nombre en el mismo espacio de nombres como una forma de polimorfismo. Seleccione una: Verdadero. Falso. A la vista del siguiente código: class Parallelogram: def __init__(self, side1, angle = 90, side2 = None): self.side1 = side1 if side2 == None or side1 == side2: if angle != 90: self.kind = "rhombus" self.angle = angle else: self.kind = "square" else: self.side2 = side2 if angle != 90: self.kind = "rhomboid" self.angle = angle else: self.kind = "rectangle" ¿Qué valor muestra la siguiente instrucción? print(Parallelogram(8, 90, 8).kind) Seleccione una: square. rhombus. rhomboid. rectangle. A la vista del siguiente código: from fractions import Fraction def numberFunc(number1, number2): if type(number1) == int and type(number2) == int: return Fraction(number1, number2) elif type(number1) == float and type(number2) == float: return complex(number1, number2) ¿Qué valor muestra la siguiente instrucción? print(numberFunc(1, 2.0)) Seleccione una: None. 1/2. (1+2j). Marque la afirmación correcta. Seleccione una: En Python, un iterador es un objeto que devuelve datos, elemento a elemento. En Python, un iterador es un tipo especial de bucle, definido usando métodos mágicos. En Python, un iterador es un objeto que recorre un rango de números devolviendo uno en cada iteración. ¿Qué métodos deben definirse para que una clase sea un iterador? Seleccione una o más de una: next. __next__. iter. __iter__. ¿Qué sentencia debe incluirse en la definición de un generador? Seleccione una: iter. next. yield. Las pruebas de programas tienen como objetivo... Seleccione una: detectar la existencia de posibles defectos en el código. depurar los errores presentes en un programa. garantizar que el programa es correcto. Cada | 1 | se compone de un conjunto de | 2 | y un conjunto de | 3 | para esos datos. 1. 2. 3. Ordene los diferentes tipos de pruebas por su secuencia temporal. Pruebas_de_integración Pruebas_de_Sistema_-_pruebas_beta Pruebas_de_Sistema_-_pruebas_alfa Pruebas_de_unidades. ¿Qué pruebas se basan exclusivamente en el conocimiento de la interfaz del código? Seleccione una: de caja blaca. de caja negra. de caja gris. Ordene los pasos de la Prueba del Camino Básico: Se_calcula_la_complejidad_ciclomática Se_diseñan_casos_de_prueba_que_fuerzen_la_ejecución_de_cada_camino Se_obtiene_el_conjunto_de_caminos_básicos Se_obtiene_el_grafo_del_flujo_de_ejecución_del_programa. ¿Cuántos nodos predicado tiene el grafo del flujo de ejecución de la función is_prime? def is_prime(num): if num <= 1: return False if num <= 3: return True if num % 2 == 0 or num % 3 == 0: return False i = 5 while i * num: if num % i == 0 or num % (i + 2) == 0: return False i = i + 6 return True. ¿Cuál es la complejidad ciclomática del la función bubble_sort? def bubble_sort(seq): length = len(seq) for i in range(length): for j in range(0, length-i-1): if seq[j] > seq[j+1] : seq[j], seq[j+1] = seq[j+1], seq[j]. Los conjuntos de datos de prueba se diseñan de forma que... Seleccione una: sean menos que el número total de caminos básicos encontrados. cumplan la secuencia de condiciones representadas por los arcos salientes de los nodos predicados en cada camino básico. no se repita la ejecución de nodos del grafo de flujo de ejecución en diferentes casos de prueba. ¿Cuál de las siguientes NO es una técnica pra seleccionar casos de prueba para pruebas de caja negra? Seleccione una: Camino básico. Valores límite. Clases de equivalencia. Las clases de equivalencia son conjuntos de entradas para las que la unidad a probar debe tener un comportamiento distinto. Seleccione una: Verdadero. Falso. Las clases de equivalencia no válidas Seleccione una: Representan conjuntos de valores para los que la solución no ha sido validada (probada). Representan conjuntos de valores para los que la solución no funciona correctamente (funcionamiento no válido). Representan conjuntos de valores que no son entradas válidas (correctas) para el problema plantaeado. En desarrollo de software, ¿qué representan las siglas TDD? Seleccione una: Tests Development Delay. Test Debugging & Delivery. Test Driven Development. ¿Las clases de equivalencia representan rangos de valores? Seleccione una: No, las clases de equivalencia con frecuencia representan un rango de valores, pero no siempre. No, las clases de equivalencias representan conjuntos de valores, no rangos de valores. Sí, las clases de equivalencia siempre representan un rango de valores. La técnica de prueba de valores límite se sustenta... Seleccione una: ...en que los valores límite son más fáciles de identificar que cualquier otro valor de la clase. ...en establecer un límite para la cantidad de valores a probar de cada clase de equivalencia. ...en que la mayoría de los errores suelen producirse en los valores extremos, o límites de una clase. Al diseñar pruebas para los valores límite de un rango de números reales, debemos tener en cuenta, como factor adicional... Seleccione una: Si los valores son positivos o no. No usar divisores negativos. La precisión requerida. ¿Qué factor adicional debemos tener en cuenta cuando diseñamos pruebas para contenedores? Seleccione una: La precisión. La monoticidad. El tamaño. Al probar un método de una clase... Seleccione una o más de una: Debemos comprobar el resultado que devuelve, si lo hay. Debemos comprobar los cambios en el objeto asociado. No podemos usar los setter ni los getter predefinidos. ¿En qué consiste la técnica "una función, una prueba"? Seleccione una: En que una función solo se puede probar una vez. En desarrollar una función por cada caso de prueba. En desarrollar todas las puebas en una única función. Empareje cada concepto con su descripción. organiza la ejecución de las pruebas y recopila y proporciona sus resultados. representa la preparación necesaria para realizar una o más pruebas y cualquier acción de limpieza asociada. una colección de casos de prueba, conjuntos de pruebas o ambos, se utiliza para agregar pruebas que deben ejecutarse juntas. es la unidad individual de prueba, comprueba una respuesta específica a un conjunto particular de entradas. ¿Cómo se llama la clase de la que deben heredar las clases que implementen casos de prueba basados en unittest?. En la primera línea del informe de pruebas de unittest, una letra 'F' significa que... Seleccione una: Ha ocurrido una excepción al ejecutar un caso de prueba. La ejecución de un caso de prueba ha ido bien ("Fine"). Se ha incumplido un aserto al ejecutar un caso de prueba. ¿Cuál de los siguientes métodos de aserto se usa habitualmente de forma diferente al resto? Seleccione una: .assertRaises(). .assertTrue(). .assertEqual(). .assertIs(). Cuando el resultado esperado y el obtenido son de tipo float ¿Qué método de aserto se usa para comprobar que el resultado es correcto? Seleccione una: .assertEqual(). .assertFloatEqual(). .assertAlmostEqual(). Empareje cada método con su descripción. Se ejecuta después de cada test. Se ejecuta una sola vez, antes de empezar la ejecución de los tests. Se ejecuta antes de cada test. Se ejecuta una sola vez, después de ejecutar todos los tests. Una test suite es... Un conjunto de tests definidos en el mismo módulo. Un conjunto de tests que queremos ejecutar juntos. Una clase que se usa para implementar casos de prueba. Un test loader sirve para... Crear una test suite. Ejecutar un conjunto de pruebas. Generar un informe de pruebas. Un objeto de una clase puede tener atributos que sean referencias a otros objetos de la misma clase. Verdadero. Falso. Una estructura encadenada está formada por un conjunto de | 1 | , generalmente denominados | 2 | de la estructura, que se referencian unos a otros. Deben existir objetos | 3 | , que no referencian a otros objetos, así como al menos un objeto inicial (según la estructura puede denominarse primero, frente, cima, raíz, etc.) que es referenciado desde "fuera" de la estructura y sirve como "punto de | 4 | " a la misma. | 1 |. | 2 |. | 3 |. | 4 |. Usando listas encadenadas es más fácil acceder a un elemento individual que usando arrays. Seleccione una: Verdadero. Falso. Dadas las siguientes definiciones de clase: class LinkedList: class Node: def __init__(self, value, next_node = None): self.value = value self.next_node = next_node def __init__(self): self.__first = None Complete el siguiente método para calcular la longitud de una lista encadenada: def __len__(self): count = 0 current = self. | 1 | while current != | 2 | : count += 1 current = current. | 3 | return count. | 1 |. | 2 |. | 3 |. Seleccione la afirmación correcta. Seleccione una: La inserción por delante es igual de eficiente en ambas implementaciones. La inserción por delante es más eficiente en un array list. La inserción por delante es más eficiente en una lista encadenada. Dadas las siguientes definiciones de clase: class LinkedList: class Node: def __init__(self, value, next_node = None): self.value = value self.next_node = next_node def __init__(self): self.__first = None self.__len = 0 Complete el método para insertar un valor al final de la lista: def append(self, value): new_node = self.Node( | 1 | ) if self. | 2 | == None: self.__first = new_node else: current = self. | 3 | while current. | 4 | != None: current = current.next_node current.next_node = | 5 | self.__len += 1. | 2 |. | 1 |. | 3 |. | 4 |. | 5 |. Complete el siguiente código para insertar un nodo en una posición, indicada por un índice, en una lista encadenada: def insert(self, where, value): if where < 0 or where > len(self): # where: posición donde se ha de insertar raise IndexError else: if where == 0: self.__first = self.Node(value, | 1 | ) elif where == len(self): new_node = self.Node(value) self.__last.next_node = new_node self. | 2 | = new_node else: current = self.__first current_pos = 1 while current_pos < where: current = current.next_node current_pos += 1 | 3 | .next_node = self.Node(value, current. | 4 | ) self.__len += 1. | 1 |. | 2 |. | 3 |. | 4 |. Complete el siguiente código para borrar el primer elemento de una lista encadenada: def delete_first(self): if self.__first is not None: self. | 1 | = self.__first. | 2 | self.__len -= 1 if sel.__len == 0: self.__last = | 3 |. | 1 |. | 2 |. | 3 |. Complete el siguiente código para borrar el último elemento de una lista encadenada: def delete_last(self): if self.__len > 0: if self.__len == 1: # Si solo hay un elemento, la lista queda vacía self.__last = self.__first = None else: # Hay que encontrar el penúltimo elemento para convertirlo en último prev = self.__first current = self.__first.next_node while current != self.__last: prev = | 1 | current = current.next_node # Convertimos el penúltimo elemento en último prev.next_node = | 2 | self.__last = | 3 | self.__len -= 1. | 1 |. | 2 |. | 3 |. Complete el siguiente método para borrar un elemento, de una lista encadenada, especificando su posición. def delete(self, index): # index: posición el elemento a borrar if index < 0: # Ajustamos los índices negativos index = self.__len + index if index in range(self.__len): if index == 0: # Borrar el primer elemento self.__first = self. | 1 | .next_node self.__len -= 1 if self.__len == 0: self.__last = None else: # Hay que encontrar el nodo anterior al que queremos borrar prev = self.__first current = self.__first. | 2 | current_index = 1 while current_index != index: prev = current current = current.next_node current_index += 1 # Saltamos el nodo a borrar prev.next_node = | 3 | if current == | 4 | : # Por si es el último nodo self.__last = prev self.__len -= 1 else: raise IndexError. | 1 |. | 2 |. | 3 |. | 4 |. En Python, para hacer que un contenedor sea iterable basta con.... ...implementar el método __next__() como una función generadora. ...hacer que herede de un contenedor predefinido (Tuple, List, Dict,...). ...implementar el método __iter__() como una función generadora. |





