# 2a def karaktersnitt(karakterer): poeng = {"A":5, "B":4, "C": 3, "D":2, "E":1, "F":0} sum = 0 for karakter in karakterer: sum += poeng[karakter] return sum / len(karakterer) # 2b def poeng_til_karakter(poengsum, karaktergrenser): karakter = "F" for bokstav in karaktergrenser: if poengsum >= karaktergrenser[bokstav]: karakter = bokstav return karakter # 2c def beregn_karakter(kandidater): karaktergrenser = { 'E':42, 'D':55, 'C':64, 'B':82, 'A':88 } karakterer = {} for kandidat in kandidater: sum = 0 for poeng in kandidater[kandidat]: sum += poeng karakterer[kandidat] = poeng_til_karakter(sum, karaktergrenser) return karakterer # 2d Flere alternativer def karakterstatistikk(karakterordbok): karakterstatistikk_dic = {} for karakter in karakterordbok.values(): try: karakterstatistikk_dic[karakter] +=1 except: karakterstatistikk_dic[karakter] = 1 return karakterstatistikk_dic def karakterstatistikkB(karakterer): # 'smartere' enn alternativet nedenfor; 1 løkke statistikk = {"A": 0, "B": 0, "C": 0, "D": 0, "E": 0, "F": 0} for kandidatnr in karakterer: karakter = karakterer[kandidatnr] statistikk[karakter] += 1 return statistikk def karakterstatistikkAlt(karakterer): statistikk = {} for karakter in ["A", "B", "C", "D", "E", "F"]: statistikk[karakter] = 0 for kandidat in karakterer: if karakter == karakterer[kandidat]: statistikk[karakter] += 1 return statistikk # Dette er det ikke del av oppgaven def testprogram(): print(karaktersnitt("AAABBBCCCDDDEEE")) assert karaktersnitt("AAABBBCCCDDDEEE") == 3.0*(5+4+3+2+1)/15 karaktergrenser = { 'E':42, 'D':55, 'C':64, 'B':82, 'A':88 } assert poeng_til_karakter( 75.5 , karaktergrenser ) == "C" assert poeng_til_karakter( 41.9 , karaktergrenser) == "F" assert poeng_til_karakter( 110 , karaktergrenser ) == "A" assert poeng_til_karakter( 82, karaktergrenser) == "B" assert poeng_til_karakter( 42, karaktergrenser) == "E" sensur ={ 1:[7, 0, 8, 4, 5, 7, 2, 1, 7, 8, 7, 2, 4, 2, 7], 2:[9, 3, 9, 8, 3, 4, 3, 9, 9, 9, 9, 2, 7, 7, 2], 3:[9, 3, 3, 9, 4, 8, 4, 5, 6, 9, 1, 5, 0, 5, 3], 4:[1, 3, 1, 6, 1, 3, 0, 3, 0, 2, 5, 1, 3, 4, 0], 5:[0, 2, 9, 7, 0, 7, 2, 1, 8, 3, 4, 1, 2, 2, 5], 6:[9, 3, 1, 1, 7, 9, 0, 2, 0, 4, 6, 2, 9, 2, 2], 7:[1, 9, 9, 4, 8, 4, 9, 9, 6, 7, 2, 1, 5, 5, 7], 8:[2, 7, 9, 2, 2, 5, 6, 3, 2, 6, 4, 4, 2, 7, 1], 9:[2, 6, 9, 0, 5, 1, 2, 8, 5, 6, 8, 0, 9, 2, 7], 10:[3, 3, 7, 1, 2, 9, 6, 7, 2, 1, 5, 9, 5, 0, 1], 11:[4, 8, 2, 7, 0, 7, 3, 1, 5, 4, 2, 1, 9, 6, 2] } print(beregn_karakter(sensur)) print(karakterstatistikk(beregn_karakter(sensur))) testprogram()