# Version 7.0: Flera konton i en lista som läses från fil class Konto(object): def __init__(self, namn, pengar): """ Anropas när nytt bankkonto skapas """ self.namn = namn self.pin = "1234" self.saldo = pengar def __str__(self): """ Returnerar en sträng som används vid utskrift med print """ return self.namn + ": " + str(self.saldo) + " kronor" def __lt__(self, other): """För jämförelser mellan konton (t ex vid sortering). """ if self.saldo < other.saldo: return True else: return False def satt_in(self, pengar): """Insättning på kontot """ self.saldo += pengar def ta_ut(self, pengar): """Uttag från kontot """ kod = input("Ge din PIN-kod:") if kod == self.pin: self.saldo -= pengar else: print("Fel PIN-kod. Stå kvar, polisen kommer strax.") class Bank(object): def __init__(self): """ Skapar en tom lista där konto-objekt ska läggas in """ self.konton = [] def las_konton(self): """ Läser konton från filen konton7.txt till listan, returnerar den""" fil = open("konton7.txt","r") namn = fil.readline().strip() while namn: pin = int(fil.readline()) saldo = float(fil.readline()) nytt = Konto(namn, saldo) self.konton.append(nytt) namn = fil.readline().strip() fil.close() self.konton.sort() return self.konton def spara_konton(self): """ Skriver ut (sparar) alla konton på filen konton7.txt """ fil = open("konton7.txt", "w") for konto in self.konton: fil.write(konto.namn+"\n") fil.write(str(konto.pin)+"\n") fil.write(str(konto.saldo)+"\n") fil.close() def visa_alla(self): """ Skriver ut information om alla konton i banken """ losen = input("Ge det hemliga lösenordet: ") if losen == "pengar": print("Dessa konton finns i banken:") for konto in self.konton: print(konto) else: print("Fel lösenord") def nytt_konto(self): """ Ser till att nytt konto skapas och lägger in det i listan """ namn = input("Namn:") nytt = Konto(namn, 0) self.konton.append(nytt) print("Du har nu ett konto i Nördbanken") print("Din PIN-kod är", nytt.pin) def insattning(self): """ Hanterar insättning """ namn = input("Namn:") pengar = float(input("Hur mycket vill du sätta in? ")) for konto in self.konton: if konto.namn == namn: konto.satt_in(pengar) def uttag(self): """ Hanterar uttag """ namn = input("Namn:") pengar = float(input("Hur mycket vill du ta ut? ")) for konto in self.konton: if konto.namn == namn: konto.ta_ut(pengar) def menyval(): """ Skriver ut menyn, läser in och returnerar användarens val """ print("N Skapa nytt konto") print("I Insättning") print("U Uttag") print("V Visa alla konton (endast bankpersonal)") print("A Avsluta") val = input("Vad vill du göra?") return val def main(): print("Välkommen till Nördbanken!") print("---------------------------------") nb = Bank() nb.las_konton() val = menyval() while val != "A": if val == "N": nb.nytt_konto() elif val == "I": nb.insattning() elif val == "U": nb.uttag() elif val == "V": nb.visa_alla() val = menyval() nb.spara_konton() print("Tack för visad hänsyn, välkommen åter.") main()