Pythonuppgift, skapa en filofax... behöver hjälp med att sortera efter datum!
Hej!
Jag har en skoluppgift där jag ska skapa en fungerande filofax (anteckningsbok) i Python.
Man ska kunna få fram en meny, skapa nya sidor med anteckningar, bläddra osv.
Jag har fått till allt förutom att när nya sidor skapas så läggs de till i den ordning man lägger till dem. Jag vill att de ska läggas till efter datumordning. Hur gör man det!? Jag har testat olika metoder i två dagar nu, men inte kommit fram till någon lösning. Jag använder den inbyggda funktionen datetime.
Snälla hjälp mig, uppskattar all hjälp jag kan få!
Kod:
import datetime
# -*- coding: utf-8 -*-
class anteckningssidor(object):
def __init__(self, datum, anteckning):
self.datum = datum
self.anteckning = anteckning
def __str__(self):
return "Sida: " + self.datum + " med anteckningen: "+ self.anteckning
class filofax(object):
def __init__(self, sidor=[], sidan=""):
self.sidor = sidor
self.sidan = sidan
def __str__(self):
return str(len(self.sidor)) + " sidor inlagda"
def bladdra(self, riktning):
if len(self.sidor):
sidnummer = self.sidor.index(self.sidan)
sidnummer += riktning
if sidnummer >= len(self.sidor):
sidnummer = 0
elif sidnummer < 0:
sidnummer = len(self.sidor) - 1
self.sidan = self.sidor[sidnummer]
#else:
#self.sidan = self.sidor[sidnummer]
#return True
def nysida(self, datum, anteckning):
ny_sida = anteckningssidor(datum, anteckning)
self.sidor.append(ny_sida)
self.sidan = ny_sida
def radera(self):
if len(self.sidor):
raderad = self.sidan
self.bladdra(1)
self.sidor.remove(raderad)
if len(self.sidor) == 0:
self.sidan = ()
def lista(self):
for lista in self.sidor:
return self.sidor
#felhantering för datum
def felhantering_datum():
while True:
try:
korrekt_datum = input ("Ange datum på formen ÅÅÅÅ-MM-DD: ")
datetime.datetime.strptime(korrekt_datum, "%Y-%m-%d")
return korrekt_datum
break
except ValueError:
print ("Ange ett riktigt datum på den korrekta formen, tack!")
def main():
sidorna = filofax()
lista = []
try:
file = open("sidor1.txt", "r")
tmp = file.readlines()
while tmp:
datum = tmp [:-1]
anteckning = file.readlines()[:-1]
sidorna.nysida(datum, anteckning)
tmp = file.readlines()
file.close()
except(IOError):
print ("\n")
val = " "
while val:
if sidorna.sidan:
print ("\n Aktuella sidan: ", sidorna.sidan)
print ("""
Meny
0 - Avsluta
1 - Bläddra framåt
2 - Bläddra bakåt
3 - Lägg till anteckning
4 - Ta bort denna anteckning
5 - Visa alla anteckningar
\n""")
val = input("Ange val: ")
if val == "0":
print ("\nVi ses!\n")
val = ""
elif val == "1":
if sidorna.lista() == None:
print ("\nDu har inga anteckningar ännu...")
else:
sidorna.bladdra(1)
elif val == "2":
if sidorna.lista() == None:
print ("\nDu har inga anteckningar ännu...")
else:
sidorna.bladdra(-1)
elif val == "3":
datum = felhantering_datum()
anteckning = input("Ange anteckning for datumet: ")
sidorna.nysida(datum, anteckning)
elif val == "4":
if sidorna.lista() == None:
print ("\nDet finns inga anteckningar att radera...")
else:
sidorna.radera()
print ("\nAnteckning borttagen.")
elif val == "5":
if sidorna.lista() == None:
print ("\nDu har inga anteckningar ännu...")
continue
else:
for alla_sidor in sidorna.lista():
print (alla_sidor)
else:
print("\nVänligen välj en siffra mellan 0-5")
main()