# Granskningsexempel class Schlager(object): """Representerar en schlagerlåt""" def __init__(self, land, titel, artist, text, musik, nummer): """Konstruktorn""" self.l = land # Land self.t = titel # Låtens titel self.a = artist # Artist eller grupp self.tx = text # Textförfattare self.m = musik # Låtens kompositör self.n = nummer # Ordningsnummer self.p = 0 # Poäng i omröstningen def __str__(self): """För utskrift""" return str(self.n) + ". " + self.t def Skriv1(self): print("Låt nummer", self.n) print("Land: ", self.l) print("Titel: ", self.t) print("Artist: ", self.a) print("Texten skriven av ", self.tx) print("Musiken komponerad av ", self.m) print("__________________________________________________________________________") def skriv2(self): print("%-4s %-25s %10d" % (str(self.n) + ".", self.t, self.p)) def write3(self): stjarnor = '*'*50 print(stjarnor) print((self.l +"s "+ self.a.upper()).center(50)) print("med låten".center(50)) print((self.t.upper()).center(50)) print(stjarnor) def Titeln(self): return self.t def poangen(self): return self.p def Numret(self): return self.n def addera(self, p): self.p += p def las_filen(self,filnamn): try: filen = open(filnamn,"r") except(IOError): print("Kunde inte öppna filen", filnamn, "\nAvslutar programmet!") import sys sys.exit() lista = [] nummer = 1 land = filen.readline().strip() while land: titel = filen.readline().strip() artist = filen.readline().strip() text = filen.readline().strip() musik = filen.readline().strip() filen.readline() sang = Schlager(land,titel, artist, text, musik, nummer) lista.append(sang) nummer += 1 land = filen.readline().strip() print("\n MELODIFESTIVALEN") print(" 2012 \n") for sang in lista: sang.Skriv1() input() import copy ursprungslista = copy.deepcopy(lista) # Läser in tittarnas röster print ("Nu vill vi ha tittarrösterna från Storbrittannien") for p in (1,2,4,8,12): nr = las_tal("Vilken låt får "+ str(p) + " poäng? ",1,len(lista)+1) index = sok_index(nr,lista) print("Låt nummer", lista[index], "får alltså", p, "poäng av tittarna i", land) lista[index].addera(p) lista.sort(key=Schlager.poangen,reverse=True) visa_stallning(lista) print ("Nu vill vi ha tittarrösterna från Tyskland") for p in (1,2,4,8,12): nr = las_tal("Vilken låt får "+ str(p) + " poäng? ",1,len(lista)+1) index = sok_index(nr,lista) print("Låt nummer", lista[index], "får alltså", p, "poäng av tittarna i", land) lista[index].addera(p) lista.sort(key=Schlager.poangen,reverse=True) visa_stallning(lista) print ("Nu vill vi ha tittarrösterna från Frankrike") for p in (1,2,4,8,12): nr = las_tal("Vilken låt får "+ str(p) + " poäng? ",1,len(lista)+1) index = sok_index(nr,lista) print("Låt nummer", lista[index], "får alltså", p, "poäng av tittarna i", land) lista[index].addera(p) lista.sort(key=Schlager.poangen,reverse=True) visa_stallning(lista) print ("Nu vill vi ha tittarrösterna från Spanien") for p in (1,2,4,8,12): nr = las_tal("Vilken låt får "+ str(p) + " poäng? ",1,len(lista)+1) index = sok_index(nr,lista) print("Låt nummer", lista[index], "får alltså", p, "poäng av tittarna i", land) lista[index].addera(p) lista.sort(key=Schlager.poangen,reverse=True) visa_stallning(lista) print ("Nu vill vi ha tittarrösterna från Italien") for p in (1,2,4,8,12): nr = las_tal("Vilken låt får "+ str(p) + " poäng? ",1,len(lista)+1) index = sok_index(nr,lista) print("Låt nummer", lista[index], "får alltså", p, "poäng av tittarna i", land) lista[index].addera(p) lista.sort(key=Schlager.poangen,reverse=True) visa_stallning(lista) # Läser in juryns röster for land in ("Storbrittannien","Tyskland","Frankrike","Spanien","Italien"): print("Och nu vill vi ha rösterna från juryn i", land) for p in (1,2,4,8,12): nr = las_tal("Vilken låt får "+ str(p) + " poäng? ",1,len(lista)+1) index = sok_index(nr,lista) print("Låt nummer", lista[index], "får alltså", p, "poäng av juryn i", land) lista[index].addera(p) lista.sort(key=Schlager.poangen,reverse=True) visa_stallning(lista) return lista ############## Här slutar klassen Schlager ########### def sok_index(nr, lista): #Funktion med två parmetrar: nr och lista for i in range(len(lista)): #Slinga som går igenom lista if lista[i].n == nr: #Om lista[i].n är lika med nr return i #så returneras i def sok_kompositor(namn, lista): #Inte klar pass def visa_stallning(lista): print("--------------------------------------------------------\n") #Skriver ut en rad med------------- print("\n AKTUELL STÄLLNING \n ") #Skriver ut "AKTUELL STÄLLNING" print("%-4s %-25s %10s\n" % ("Nr", "Låt", "Poäng")) #Skriver ut "Nr", "Låt" och "Poäng" for sang in lista: #Går igenom lista sang.skriv2() #Anropar skriv2 print("--------------------------------------------------------\n") #Skriver ut en rad med------------- def visa_listan(): #Funktion utan parametrar for sang in lista: #Slinga som går igenom lista print(sang) #Skriver ut varje element i listan def las_tal(fraga, undre, ovre): #Tre parametrar: fraga, undre, ovre svar = None #svar sätts till None while svar not in list(range(undre,ovre)): #Slingan upprepas så länge villkoret är True try: #Försök... svar = int(input(fraga)) #läsa in svaret och göra om det till heltal except(ValueError): #utom om det blir ValueError svar = None #Då sätts svar till None return svar #Returnera svaret # Läser in låtarna från fil låt = Schlager(0,0,0,0,0,0) lista = låt.las_filen("Eurovision2012.txt") # Skriver ut ursprungslistan och vinnaren print("Följande låtar deltog i Melodifestivalen 2012") visa_listan() input("\n\n... och vinnaren är ...") input("...") input("...") input("...\n\n") lista[0].write3() from datetime import * idag = date.today() finaldatum = date(2012,5,26) delta = finaldatum - idag dagar_kvar = delta.days print("\n\n\n PS Det är bara", dagar_kvar, "dagar kvar till finalen...\n\n")