.. module:: tests Pregunta d'opcions múltiples ---------------------------- Les preguntes d'opcions múltiples d'Atenea permeten associar un pes, positiu o negatiu, a cada opció. Volem calcular automàticament els pesos de cada opció en funció de si és correcta o no. Si :math:`c` és el nombre d'opcions correctes, el pes de cada una d'elles serà :math:`\frac{1}{c}`. Aquesta és una manera senzilla de garantir que els pesos positius sumin 1. Calcularem els pesos negatius per les opcions incorrectes de manera anàloga per tal de garantir que sumin -1. Dissenya la funció següent i desa-la al mòdul :mod:`tests` (fitxer :file:`tests.py`). .. function:: posa_pesos(opc) Calcula el pes de cada opció. :param list(bool) opc: llista d'opcions. El valor :code:`True` indica que l'opció és correcta i :code:`False` que és incorrecta. :rtype: list(float) :return: llista de pesos calculats com s'ha explicat més amunt. Per exemple: .. literalinclude:: test-posa_pesos.txt :language: pycon :start-after: ---- inici :end-before: ---- fi Disposes de més tests al fitxer :download:`test-posa_pesos.txt`. Ara volem calcular la nota d'una pregunta d'opcions múltiples a partir de les opcions marcades en la resposta i del pes de cada opció. La nota de la pregunta no pot ser negativa. Dissenya la funció següent i desa-la al mòdul :mod:`tests` (fitxer :file:`tests.py`). .. function:: calcula_nota(pesos, resp) Calcula la nota de la pregunta a partir de les opcions marcades en la resposta i del pes de cada opció. :param list(float) pesos: pes de cada opció. :param list(int) resp: opcions marcades. Llista d'índexs vàlids de la llista de pesos. :rtype: float :return: nota calculada com la suma dels pesos de les opcions marcades. **No pot ser negativa**. Per exemple: .. literalinclude:: test-calcula_nota.txt :language: pycon :start-after: ---- inici :end-before: ---- fi Disposes de més tests al fitxer :download:`test-calcula_nota.txt`.