1. 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 \(c\) és el nombre d’opcions correctes, el pes de cada una d’elles serà \(\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 tests (fitxer
tests.py).
- tests.posa_pesos(opc)¶
Calcula el pes de cada opció.
- Paràmetres:
opc (list(bool)) – llista d’opcions. El valor
Trueindica que l’opció és correcta iFalseque és incorrecta.- Tipus de retorn:
- Retorna:
llista de pesos calculats com s’ha explicat més amunt.
Per exemple:
>>> preg1 = [True, False, True, False, False] >>> pesos1 = posa_pesos(preg1) >>> pesos1 == [1/2, -1/3, 1/2, -1/3, -1/3] True Arrodoneix a dos decimals els elements de la llista que retorna posa_pesos >>> [round(p, 2) for p in pesos1] [0.5, -0.33, 0.5, -0.33, -0.33]
Disposes de més tests al fitxer
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 tests (fitxer
tests.py).
- tests.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ó.
- Paràmetres:
- Tipus de retorn:
- Retorna:
nota calculada com la suma dels pesos de les opcions marcades. No pot ser negativa.
Per exemple:
>>> pesos1 = [1/2, -1/3, 1/2, -1/3, -1/3] >>> resp1 = [4, 2] >>> nota1 = calcula_nota(pesos1, resp1) >>> nota1 == pesos1[4] + pesos1[2] True >>> resp2 = [2, 3, 4] >>> nota2 = calcula_nota(pesos1, resp2) >>> nota2 0
Disposes de més tests al fitxer
test-calcula_nota.txt.