Testes de múltipla escolha

Sua tarefa é escrever um programa que permita aos professores criar um teste de múltipla escolha em uma classe chamada Testpaper e também atribuir uma nota mínima para aprovação. A matéria do teste também deve ser incluída. Os atributos estão na seguinte ordem:

  1. subject
  2. markscheme
  3. pass_mark

Além disso, precisamos criar objetos de alunos para fazer o teste! Crie outra classe chamada Student e faça o seguinte:

  • Crie um atributo chamado tests_taken e defina 'No tests taken' como valor padrão.
  • Crie um método chamado take_test(), que receba o objeto testpaper que eles estão realizando e as respostas do aluno. Compare o que eles escreveram com o gabarito e adicione ao/crie um dicionário atribuído a tests_taken da maneira mostrada no ponto abaixo.
  • Cada chave do dicionário deve ser a matéria do teste e cada valor deve ser uma string no formato mostrado nos exemplos abaixo (se o aluno foi reprovado ou não, e sua porcentagem entre parênteses).

Exemplos

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%)"}

Observações

  • Arredonde as porcentagens para o número inteiro mais próximo.
  • Lembre-se de que o atributo tests_taken deve retornar 'No tests taken' quando nenhum teste tiver sido realizado ainda.