[ create a new paste ] login | about

Link: http://codepad.org/Pc6Qyqy2    [ raw code | output | fork ]

Python, pasted on Jan 3:
#Kontaktförmedling
#Sofie Eklund 24/11-2010
       

class Register(): #Klass för att räkna ut betyg på personerna

    
        
    def meny(self):
        val = self.meny_valen()
        self.las_fil() #Hoppar till metoden las.fil()
        while val != '4':

            if val == '1': #Letar ny partner
                self.las_fil()
                self.soker()
                self.preferenser()
                self.normalisera()
                self.rankning()
                self.skriv_ut()
                val = self.meny_valen()

                
            elif val == '2': #Lägg till ny person
                self.lagg_till()
                print ('\n')
                val = self.meny_valen()
                

            elif val == '3': #Tar bort en person
                self.ta_bort()
                print ('\n')
                val = self.meny_valen()

            else:
                print ('Kontaktförmedling')
                print ('Tryck 1 för att leta efter en ny partner')
                print ('Tryck 2 för att lägga till en ny person')
                print ('Tryck 3 för att ta bort en person ur registret')
                print ('Tryck 4 för att avsluta')
                val = str(raw_input('Felaktigt val! Försök igen: '))
                print ('\n')


        if val == '4':#Avslutar program
            print ('Programmet har avslutats')

    def meny_valen(self): #Alternativ
        print ('Kontaktförmedling')
        print ('Tryck 1 för att leta efter en ny partner')
        print ('Tryck 2 för att lägga till en ny person')
        print ('Tryck 3 för att ta bort en person ur registret')
        print ('Tryck 4 för att avsluta')
        val = str(raw_input('Ange vad du vill göra: '))
        print ('\n')
        return val

        
    def las_fil(self): #Metod som lägger in män och kvinnor i olika listor
        meny = open('personregister2.txt','r')#Öppnar & läser filen.
        self.las = meny.readlines()#Lägger personerna i en lista
        self.alla_tjejer = []
        self.alla_killar = []
        self.alla = []
        for i in range(len(self.las)): #Längden på filen
            self.las[i]=self.las[i].rstrip('\n') #Tar bort \n
            plats=self.las[i].split('/')
            namn = plats[0]
            kon = str(plats [1])
            alder = int(plats [2])
            skonhet = plats[3]
            intelligens = plats[4]
            humor = plats[5]
            formogenhet = plats[6]
            sexighet = plats[7]
            utbildning = plats[8]
            self.alla.append(plats)#Lägger till i listan self.alla

            
            if plats[1] == "k": #Läggs till i listan för tjejer
                self.alla_tjejer.append(plats)
            elif plats[1] == "m":#Läggs till i listan för killar
                self.alla_killar.append(plats) 
        meny.close()


                
    def soker(self): #Metod som tar reda på vad personen söker

        self.sokes = ''
        while self.sokes not in ['man','kvinna', 'bada']:
            self.sokes = raw_input ('Söker du en man, kvinna eller bada delarna? ')
            if self.sokes not in ['man', 'kvinna', 'bada']:
                print ('Felaktigt val')

    def preferenser(self): #Metod som tar reda på personens preferenser
        print ('Gradera från 0-5 hur du värdesätter följande: ')
        egen=['Mognad: ', 'Skönhet: ', 'Intelligens: ', 'Humor: ', 'Förmögenhet: ', 'Sexighet: ', 'Utbildning: ']
        count = 0
        self.betyg=[0,0,0,0,0,0,0] #"Betyg" på egenskaperna hamnar i listan
    
        while count <7:
            try:
                value = self.betyg[count]= input(egen[count])
            except NameError as error:
                print("Du måste ange ett tal mellan 0 och 5!")
                count -=1

            if self.betyg[count] < 0:
                print ('Talet måste vara större än 0!')
                count -= 1

            elif self.betyg[count] > 5:
                print ('Talet måste vara mindre än 5!')
                count -= 1
            

            count += 1
        count=0

    def normalisera(self): #Räknar ut en persons betyg, förklaring
        if self.sokes == 'man':
            self.totalt_passar_man = []
            for l in range(len(self.alla_killar)):#Alla killar
                passar = 0
                for m in range(2,9):#Alla killars egenskaper
                    sum_max = []
                    for k in range(len(self.alla_killar)): #Rad(k), kolumn(m) :Alla killars egenskaper
                        sum_max.append(self.alla_killar[k][m])
                    passar = passar + float(self.betyg[m-2])*(float(self.alla_killar[l][m]))/float(max(sum_max))
                self.totalt_passar_man.append(passar)


        elif self.sokes == 'kvinna':
            self.totalt_passar_kvinna = []
            for l in range(len(self.alla_tjejer)):
                passar = 0
                for m in range(2,9):
                    sum_max = []

                    for k in range(len(self.alla_tjejer)):
                        sum_max.append(self.alla_tjejer[k][m])
                        
                    passar = passar + float(self.betyg[m-2])*(float(self.alla_tjejer[l][m]))/float(max(sum_max))
                    
                self.totalt_passar_kvinna.append(passar)
            
            
        elif self.sokes == 'bada':
            self.totalt_passar_alla = []
            for l in range(len(self.alla)):
                passar = 0
                for m in range(2,9):
                    sum_max = []

                    for k in range(len(self.alla)):
                        sum_max.append(self.alla[k][m])
                        
                    passar = passar + float(self.betyg[m-2])*(float(self.alla[l][m]))/float(max(sum_max))
                    
                self.totalt_passar_alla.append(passar)




    def rankning(databas,status,lista_ett,lista_tva): #Rankar alla personer som läggs i en sorterad lista
        for inmatning in databas:
            if inmatning == status:
                self.top_lista = []
                self.lista = []
                for e in range(len(lista_ett)): #Länden på alla killar
                    self.lista.append(lista_ett[e]) #Ovan läggs i listan self.lista 
                self.lista.sort()
                self.lista.reverse()#Nu är listan sorterad så den med högst betyg har lägst index
                for b in range(len(lista_ett)):
                    for j in range(len(self.lista)):
                        if self.lista[b] == lista_ett[j]:
                            self.top_lista.append(lista_tva[j])

    status = ['man','kvinna','bada']

    rankning('databas','man','self.totalt_passar_man','self.alla_killar')
    rankning('databas','kvinna','self.totalt_passar_kvinna','self.alla_tjejer')
    rankning('databas','bada','self.totalt_passar','self.alla')

    
        
    def skriv_ut(self): #Skriver ut toplistan
        for t in range(len(self.top_lista)):
            for u in range(1):
                print ('\n')
                print 'Namn: '+str(self.top_lista[t][0])
                print 'Kön: '+str(self.top_lista[t][1])
                print 'Ålder: '+self.top_lista[t][2]
                print 'Skönhet: '+self.top_lista[t][3]
                print 'Intelligens: '+self.top_lista[t][4]
                print 'Humor: '+self.top_lista[t][5]
                print 'Förmögenhet: '+self.top_lista[t][6]
                print 'Sexighet: '+self.top_lista[t][7]
                print 'Utbildning: '+self.top_lista[t][8]
                print ('\n')



    def lagg_till(self):#Lägger till en person i registret
        
        print ('Lägg till en person genom att mata in nedanstående information: ')
        meny = open('personregister2.txt', 'a')
        meny.write(str(raw_input('Namn: '))+'/')

        genus = ''
        while genus not in ['m','k']:
            genus = raw_input('Kön(m/k): ')
            if genus not in ['m','k']:
                print ('Felaktigt val!')
        meny.write(genus +'/')

        alder = int(raw_input('Ålder: ')) #Fixa resten som denna!
        while not 100 >= alder >= 18: 
            alder = int(raw_input('Felaktigt val! Försök igen:: ')) 
        meny.write(alder + '/')

        print ('Ange ett värde mellan 0-1(med en decimal) på följande: ')
        
        skonhet = int(raw_input('Skönhet: ')) #Fixa resten som denna!
        while not 1.0 >= skonhet >= 0.0: 
            skonhet = int(raw_input('Felaktigt val! Försök igen:: ')) 
        meny.write(skonhet + '/')

        intelligens = int(raw_input('Intelligens: ')) #Fixa resten som denna!
        while not 200 >= intelligens >= 70: 
            intelligens = int(raw_input('Felaktigt val! Försök igen:: ')) 
        meny.write(intelligens + '/')
        
        humor = int(raw_input('Humor: ')) #Fixa resten som denna!
        while not 1.0 >= intelligens >= 0.0: 
            humor = int(raw_input('Felaktigt val! Försök igen:: ')) 
        meny.write(humor + '/')

        formogenhet = ''
        while formogenhet < '0':
            formogenhet = raw_input('Förmögenhet(kkr): ')
            if formogenhet < '0':
                print ('Felaktigt val')
        meny.write(formogenhet +'/')

        sexighet = int(raw_input('Sexighet: ')) #Fixa resten som denna!
        while not 1.0 >= sexighet >= 0.0: 
            sexighet = int(raw_input('Felaktigt val! Försök igen:: ')) 
        meny.write(sexighet + '/')
            
        utbildning = int(raw_input('Utbildning: ')) #Fixa resten som denna!
        while not 1.0 >= utbildning >= 0.0: 
            utbildning = int(raw_input('Felaktigt val! Försök igen:: ')) 
        meny.write(utbildning + '/')
              

    def ta_bort(self):#Tar bort en person ur registret.
        meny = open('personregister2.txt','w')
        ta_bort_person = raw_input('Vem vill du ta bort? ')
        antal_personer_innan = len(self.alla)
        for k in range(len(self.alla)):
            if str(self.alla[k][0]) == str(ta_bort_person):
                for h in range(len(self.alla_killar)):
                    if str(self.alla[k][0]) == str(self.alla_killar[h][0]):
                        self.alla_killar.pop(h)     
                        break                  

                for t in range(len(self.alla_tjejer)):                                  
                    if str(self.alla[k][0]) == str(self.alla_tjejer[t][0]):
                        self.alla_tjejer.pop(t)
                        break

                                                  
                                                
                print (str(self.alla[k][0]) + ' finns inte längre i registret')
                self.alla.pop(k)#Raderar hela personen


                for f in range(len(self.alla)):
                    for s in range(9): #Rad(f), kolumn(s)
                        meny.write(self.alla[f][s])
                        if s <= 7:
                            meny.write('/')
                       
                    meny.write('\n')

                
                break #Så att den börjar om från början av metoden
        antal_personer_efter = len(self.alla)
        if antal_personer_innan == antal_personer_efter:
            print ('Det finns ingen person med namnet ' + str(ta_bort_person))


#Huvudprogram

r = Register()
r.meny()


Output:
1
2
  Line 2
SyntaxError: Non-ASCII character '\xc3' in file t.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details


Create a new paste based on this one


Comments: