# Det finnes mange l?sninger, dette er bare mitt forslag from oblig import Oblig from student import Student from retter import Retter class Emne: def __init__(self, emnekode, studenter, rettere): self._emnekode = emnekode self._studenter = studenter self._rettere = rettere self._obliger = {} def administrer(self): print(self._emnekode) muligheter = ["O", "F", "L", "A"] valg = "" while valg != "A": print("Skriv O for ? opprette en oblig") print("Skriv F for ? starte ? rette") print("Skriv L for ? lage eksamensliste") print("Skriv A for ? avslutte programmet") valg = input().strip().upper() if valg == "O": self._opprettOblig() elif valg == "F": self._startRetting() elif valg == "L": self._skrivEksamensliste() def _opprettOblig(self): frist = input("N?r er fristen p? obligen? ") id = "oblig" + str(len(self._obliger) + 1) oblig = Oblig(id, frist) self._obliger[id] = oblig #print(self._obliger) def _startRetting(self): dato = input("Hva er dagens dato? ") oblgier = self._obliger for id in self._obliger: oblig = self._obliger[id] if oblig.klarForRetting(dato): besvarelser = oblig.hentBesvarelser(id) resultater = oblig.fordelRetting(besvarelser, self._rettere) #print(besvarelser) #print(resultater) for brukernavn in resultater: resultat = resultater[brukernavn] self._studenter[brukernavn].registrer(id, resultat) def _skrivEksamensliste(self): navn = [] for brukernavn in self._studenter: student = self._studenter[brukernavn] if student.altGodkjent(len(self._obliger)): navn.append(brukernavn) print("F?lgende studenter har f?tt godkjent alle obliger:") for n in navn: print(n) studenter = {"olanor": Student("olanor", "Ola Nordmann"), "karinor": Student("karinor", "Kari Nordmann")} rettere = [Retter("perask"), Retter("p?lask")] emne = Emne("IN1000", studenter, rettere) emne.administrer() # Vi f?r testet alle metodene til alle klassene kun ved ? kj?re administrer() # Det forutsetter s?klart at vi som brukeren pr?ver alle valgmulighetene minst # en gang n?r vi kj?rer og tester programmet i terminalen # OBS! Hvis dere skal opprette mer enn en oblig m? dere bare lage flere kopier av # filen oblig1.txt hvor dere ?ker tallet for hver gang # Dere kan ogs? aktivere print-setningene i denne filen ved ? avkommentere dem # for ? sjekke at metodene faktisk har gjort det de skal # -> emne.administrer() # -> emne._opprettOblig() # -> emne._startRetting() # -> oblig.klarForRetting() # -> oblig.hentBesvarelser() # -> oblig.fordelRetting() # -> retter.vurder() # -> student.registrer() # -> emne._skrivEksamensliste() # -> student.altGodkjent()