Pruebas de opción múltiple
Tu tarea es escribir un programa que permita a los profesores crear una prueba de opción múltiple en una clase llamada Testpaper y también poder asignar una calificación mínima para aprobar. También debe incluirse la asignatura de la prueba. Los atributos están en el siguiente orden:
subjectmarkschemepass_mark
Además, ¡debemos crear objetos de estudiantes para realizar la prueba! Crea otra clase llamada Student y haz lo siguiente:
- Crea un atributo llamado
tests_takeny establece'No tests taken'como valor predeterminado. - Crea un método llamado
take_test(), que reciba el objeto testpaper que están completando y las respuestas del estudiante. Compara lo que escribieron con el esquema de respuestas y añádelo al/crea un diccionario asignado atests_takende la manera que se muestra en el punto siguiente. - Cada clave del diccionario debe ser la asignatura de la prueba y cada valor debe ser una cadena con el formato que se muestra en los ejemplos siguientes (si el estudiante ha reprobado o no, y su porcentaje entre paréntesis).
Ejemplos
paper1 = Testpaper("Maths", ["1A", "2C", "3D", "4A", "5A"], "60%")
paper2 = Testpaper("Chemistry", ["1C", "2C", "3D", "4A"], "75%")
paper3 = Testpaper("Computing", ["1D", "2C", "3C", "4B", "5D", "6C", "7A"], "75%")
student1 = Student()
student2 = Student()student1.tests_taken ➞ "No tests taken"
student1.take_test(paper1, ["1A", "2D", "3D", "4A", "5A"])
student1.tests_taken ➞ {"Maths" : "Passed! (80%)"}
student2.take_test(paper2, ["1C", "2D", "3A", "4C"])
student2.take_test(paper3, ["1A", "2C", "3A", "4C", "5D", "6C", "7B"])
student2.tests_taken ➞ {"Chemistry" : "Failed! (25%)", "Computing" : "Failed! (43%)"}Notas
- Redondea los porcentajes al número entero más cercano.
- Recuerda que el atributo
tests_takendebe devolver 'No tests taken' cuando todavía no se haya realizado ninguna prueba.