# 2A ''' Skriv en prosedyre godkjent som sjekker om en student kan framstille seg til eksamen i IN1000. Maks. poeng for obligene i IN1000 representerer vi i denne lista: [3,5,5,5,5,6,1,1]. Maks poeng er 3 for oblig 1, 5 for oblig 2, osv. På de første 6 obligene kan poengene variere fra 0 til maks, men for å få godkjent de første seks må summen være minst 19 (maks sum er 29). På de to siste gis 1 for godkjent og 0 for ikke godkjent. For at det obligatoriske arbeidet skal være godkjent må summen av poengene på oblig 1–6 være minst 19, og oblig 7 og 8 må begge ha 1 poeng. godkjent tar poenglista som eneste parameter og skal skrive ut "Obligkravet er oppfylt" om obligkravet er godkjent. Hvis det ikke er godkjent, skal prosedyren skrive ut alle kravene som ikke er ok. De tre kravene er altså: minst 19 poeng på oblig 1—6 mer enn 0 poeng på oblig 7 mer enn 0 poeng på oblig 8 ''' def p_godkjent(poeng): # parameteren poeng er ei liste med 8 heltall godkj = True if sum(poeng[:6]) < 19: print(sum(poeng[:6]), "er for liten sum for oblig 1 til 6") godkj = False if poeng[6] != 1: print("Oblig 7 er ikke godkjent") godkj = False if poeng[7] != 1: print("Oblig 8 er ikke godkjent") godkj = False if godkj: print("Obigkravet er oppfylt") # 2B ''' Skriv en funksjon godkjent som sjekker om en student kan framstille seg til eksamen i IN1000. (resten som i 2A) godkjent tar poenglista som eneste parameter og returnerer True hvis poengkravet for å gå opp til eksamen er oppfylt, False ellers. ''' def f_godkjent(poeng): # parameteren poeng er ei liste med 8 heltall godkj = True if sum(poeng[:6]) < 19 or poeng[6] != 1 or poeng[7] != 1: godkj = False return godkj # 2C # Gitt: class Student: def __init__(self, obliger): # parameteren obliger er ei liste med poeng (heltall) # variabler som starter med _ er utilgjengelig utenfor klassen self._obliger = obliger def antall_obliger(self): return len(self._obliger) def oblig(self, nr): return self._obliger[nr-1] # Hva er grensesnittet til klassen Student? # # antall_obliger() # oblig(nr) # 2D ''' Skriv funksjonen obliger_godkjent som skal beregne akkurat det samme som funksjonen godkjent i oppgave 2B. Eneste forskjell er at parameteren til funksjonen nå er et studentobjekt av klassen Student. Merk at funksjonen skal skrives i det globale skopet og at du dermed ikke har tilgang til instansvariabelen self._obliger. ''' def sjekk_om_godkjent(stud): # parameteren stud er en referanse til et Student-objekt godkjent = True poeng = [] for i in range(1, stud.antall_obliger()+1): poeng.append(stud.oblig(i)) return f_godkjent(poeng) student = Student([0,4,5,5,4,3,1,1]) ok = sjekk_om_godkjent(student) print(ok) print(sjekk_om_godkjent(Student([3,5,5,5,0,6,10,10]))) print(sjekk_om_godkjent(Student([3,5,5,5,0,6,10,0]))) print(sjekk_om_godkjent(Student([3,5,5,5,0,6,0,10]))) print(sjekk_om_godkjent(Student([3,5,4,4,0,2,10,10]))) p_godkjent([3,3,3,3,3,2,0,0]) p_godkjent([3,3,5,3,3,2,1,1]) print(f_godkjent([19,0,0,0,0,0,1,1])) print(f_godkjent([18,0,0,0,0,0,1,1])) print(f_godkjent([19,0,0,0,0,0,0,1])) print(f_godkjent([39,0,0,0,0,0,1,0]))