ich habe mich an einer Übung probiert. Im einzelenen soll man mit dem Programm Schulfächer als Instanzen anlegen und speichern, löschen(Schulfach), noten vergeben und löschen, und den durchschnitt berechnen können.
Das ganze Funktioniert auch. Hab leider aber noch fast keine Erfahrung mit Klassen und OOP usw.
Wer Lust hat kann sich das ja mal anschauen und "schimpfen"

Code: Alles auswählen
import pickle
class Subject(object):
def __init__(self):
self.ex = []
self.sa = []
self.average = 0
def new_grade(self):
self.grade = raw_input('Neue (sa) oder (ex) Note: ')
if self.grade == 'ex':
self.ex.append(int(raw_input('Neue ex Note: ')))
if self.grade == 'sa':
self.sa.append(int(raw_input('Neue sa Note: ')))
def del_grade(self):
self.grade= raw_input('Loesche (sa) oder (ex) Note: ')
if self.grade == 'ex':
self.ex.remove(int(raw_input('Loesche ex Note: ')))
if self.grade == 'sa':
self.sa.remove(int(raw_input('Loesche sa Note: ')))
def show_grades(self):
print('Ex Noten: ')
for self.grade in self.ex:
print self.grade
print('Sa Noten: ')
for self.grade in self.sa:
print self.grade
def calculate_average(self):
self.count = 0
if len(self.sa) >= 1:
self.average_sa = (float(sum(self.sa)/len(self.sa)))
self.count += 2
else:
self.average_sa = 0
if len(self.ex) >= 1:
self.average_ex = (float(sum(self.ex)/len(self.ex)))
self.count += 1
else:
self.average_ex = 0
self.average = (float(self.average_sa*2) + float(self.average_ex))/int(self.count)
print
print('Der Durchschnitt ist %s') % (str(self.average))
def main():
subject_dict = {}
while True:
print'''
(1)Neues Fach anlegen
(2)Fach loeschen
(3)Alle Facher anzeigen
(4)Noten eintragen/loeschen
(5)Noten anzeigen
(6)Durchschnitt berechnen
(7)Speichern
(8)Laden
(9)Exit
'''
choice = raw_input('Eingabe: ')
if choice == '1':
subject = raw_input('Name des Faches: ')
subject_dict[subject] = Subject()
if choice == '2':
subject = raw_input('Name des Faches: ')
del subject_dict[subject]
if choice == '3':
for keys in subject_dict.keys():
print keys
if choice == '4':
subject = raw_input('Name des Faches: ')
while True:
in_out = raw_input('(e)eintragen/(l)loeschen/(f)fertig: ')
if in_out == 'e':
subject_dict[subject].new_grade()
if in_out == 'l':
subject_dict[subject].del_grade()
if in_out == 'f':
break
if choice == '5':
subject = raw_input('Name des Faches: ')
subject_dict[subject].show_grades()
if choice == '6':
subject = raw_input('Name des Faches: ')
subject_dict[subject].calculate_average()
if choice == '7':
output = open('noten.pkl', 'wb')
pickle.dump(subject_dict, output)
output.close()
print('Datei gespeichert')
if choice == '8':
pkl_file = open('noten.pkl', 'rb')
subject_dict = pickle.load(pkl_file)
print('Datei geladen')
if choice == '9':
exit()
if __name__ == '__main__':
main()