Ich wollte die Forumsregeln lesen aber der link der in dem Thread "Vor dem posten lesen" http://wiki.python-forum.de/Forum/Regeln ist tot ^^
Nun zu meinem Problem :
Ich habe einen kleinen Stundenplan als Fingerübung geschrieben und versuche nun die Daten die der Nutzer eingegeben hat auch speichern und habe versucht das jeweils mit pickle oder json zu realisieren bin aber kläglich gescheitert ( siehe Code ^^) . Ich bin nun auf dr Suche nach einem Realisierungsansatz dafür weil ich das Ganze auch nicht so wirklich in Wege geleitet bekomme ... ich scheiterte zuletzt daran das schon (unschön) gespeicherte File ( zuletzt mit json) wieder schön einzulesen ... Mir ist bewusst dass ich die Struktur der Konstruktoren danach verändern muss , ich plane beim Initialisieren prüfen zu lassen ob Datei x (in Code data.txt) vorhanden ist und lesbar ist wenn nicht eine solche anlegen mit dem Output den anzeigen() der Klasse Woche() ausgibt . Krieg das aber nicht hin .
Natürlich freue ich mich auch über jede Kritik an meinem "stil" wenn man ihn als solchen bezeichnen kann da ich noch relativ am Anfang stehe was Programmieren betrifft . Bitte seit nachsichtig
(Auch toll , aber nebensächlich wäre eine "schönere" Ausgabe der Daten .. z.B. in einer Tabelle oder so aber trotzdem noch in der Shell wenn das möglich ist da ich mich an GUI's noch nicht rantraue )
Hier mein Code auf PB: http://pastebin.com/J0wcUhg7 [Für die die das Highlighting dort mehr mögen)
und einmal hier :
Code: Alles auswählen
# -*- coding: UTF8 -*-
#!/usr/bin/env python3
import sys
import json
import pprint
import time
class stunde:
def __init__(self):
self.daten = {'Fach': " ", 'Raum': " ", 'Lehrer': " "}
def aendern(self,was,information):
if was in self.daten:
self.daten[was] = information
else:
print('Fehler bei der Eingabe bitte auch Groß/Kleinschreibeung beachten')
def anzeigen(self):
print (" ",self.daten )
def save (self):
return self.daten
def load(self,data):
self.daten=data
print("Ihre persönlichen Daten wurden geladen ")
def raum(self):
print("Raum : ",self.daten['Raum'])
class tag:
def __init__(self):
self.stunden = []
for i in range(11):
std = stunde()
self.stunden.append(std)
def aendern(self,tagwas,was,information):
if len(self.stunden)>=(tagwas-1):
self.stunden[tagwas-1].aendern(was,information)
else:
print("Dieser tag hat nur " , len(self.stunden) , "Stunden. Bitte eine dieser wählen")
def anzeigen(self):
for i in range(len(self.stunden)):
print(i+1)
self.stunden[i].anzeigen()
def save (self):
datas=[]
for i in range(len(self.stunden)):
datas.append(self.stunden[i].save())
return datas
def raum(self):
for i in range(len(self.stunden)):
print(i+1),self.stunden[i].raum()
class woche:
def __init__(self):
self.tage = []
for i in range(5):
day = tag()
self.tage.append(day)
def aendern(self,wochewas,tagwas,was,information):
if len(self.tage)>=(wochewas-1):
self.tage[wochewas-1].aendern(tagwas,was,information)
else:
print("Diese Woche hat nur " , len(self.tage) , "Tage zur Auswahl. Bitte einen dieser wählen")
def anzeigen(self , ouf = sys.stderr):
for i in range(len(self.tage)):
print("Tag ", i+1 , file = ouf),self.tage[i].anzeigen()
def save(self):
data =[]
for i in range(len(self.tage)):
it=self.tage[i].save()
data.append(it)
file = open("data.txt","w")
data2save=str(data)
file.write(json.dumps(data2save))
def raum(self , ouf = sys.stderr):
for i in range(len(self.tage)):
print("Tag ", i+1 , file = ouf ),self.tage[i].raum()
def main():
week=woche()
eingabe = ""
while 1:
print()
print(" Eintragungen zu einem (T)ag ändern? ")
print(" Wochenplanplan (a)nzeigen? ")
print(" (R)aumplan anzeigen")
print(" (E)nde? ")
print()
eingabe = input(' Ihre Wahl? ')
print()
if eingabe in ['t','T']:
while True:
wochewas =(input('Welchen Tag wollen Sie bearbeiten? (Bitte Zahl angeben!) '))
try:
wochewas = int(wochewas)
break
except ValueError :
print("Nur Zahlen eingeben bitte")
while True :
tagwas = (input('Welche Stunde wollen Sie bearbeiten? (Bitte Zahl angeben!) '))
try:
tagwas = int(tagwas)
break
except ValueError :
print("Nur Zahlen eingeben bitte")
stdwas = input('Welche Information wollen Sie eintragen? (Fach, Raum oder Lehrer?) ').title()
inf = input('Was soll eingetragen werden?(Maximal 4 Zeichen) ')[:4].ljust(4)
week.aendern(wochewas,tagwas,stdwas,inf)
elif eingabe in ['a','A']:
week.anzeigen()
elif eingabe in ['r','R']:
week.raum()
elif eingabe in["e","E"]:
warten=input('Bitte nochmal Enter drücken! ')
week.save()
time.sleep(1)
sys.exit(0)
elif eingabe in ['l','L']:
file = open("data.txt","r")
week=json.load(file)
file.close
pprint.pprint(week)
else :
print("Bitte ein Buchstaben aus den Klammern oben wählen!")
main()