mich hat auch auf Grund eines anderen Beitrages hier die Adressbuchmania gepackt und die dort schon gepostete Skizze etwas ausgebaut.
Vorweg:
Es soll nicht wirklich als Adressbuch zum Einsatz kommen.
Ich möchte anhand dieses Code einiges demonstrieren (ne, natürlich nicht euch:-)), dabei soll die Funktionalität natürlich gegeben sein.
Was mich am meisten interessiert: was ist in welchen Funktionen noch einfacher zu formulieren. Ihr wisst ja, als Künstler, der auch viel Barockmusik gespielt hat, habe ich wohl schon von daher einen barocken Programmierstil entwickelt, lol.
Zur Handhabung: Beim Eingeben neuer Adressen einfach alles in einem Rutsch eingeben. Die Einträge dürfen unterschiedlich sein - genau das ist ein Punkt, der jetzt für mich nicht tragisch ist.
Eingabe: test test test 34 5678 test
und dann enter.
Fehler habe ich glaube ich inzwischen alle abgefangen, falls nicht bitte auch diese mitteilen.
Noch was: der Abschnitt auf die Überprüfung des Betriebssystem braucht euch nicht weiter wundern, das habe ich gemacht, damit das Skript in der Schule sowohl im Raum mit den Windowskisten wie in jenem mit den Linuxbüchsen verwendet werden kann.
So dann, auf lehrreiche Beiträge freut sich
rolgal_reloaded
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: cp1252 -*-
##adressbuch = {1: ["Gnom","Gustav","Gnomweg", "8", "7777", "Gnomhausen"],
## 2: ["Gnom","Katharina","Gnomweg", "8", "7777", "Gnomhausen"],
## 3: ["Gnom","Gabriel","Gnomweg", "8", "7777", "Gnomhausen"]}
import pickle, sys, os
def test():
for schluessel in adressbuch.iterkeys():
if adressbuch[schluessel] == None:
return schluessel
break
def anzeigen():
for eintrag in adressbuch.iteritems():
if eintrag[1]:
print eintrag[0], " ".join(eintrag[1])
def eintragen():
eintraege = raw_input("Bitte Adresse eingeben: ")
if len(eintraege.split()) >= 2:
schluessel = test()
if schluessel:
adressbuch[schluessel] = eintraege.split()
else:
try:
schluessel = max(adressbuch.keys()) + 1
adressbuch[schluessel] = eintraege.split()
except ValueError:
adressbuch[1] = eintraege.split()
else:
print "Es müssen mindestens zwei Angaben gemacht werden"
def bearbeiten():
auswahl = raw_input("Bitte die Nummer des Eintrags angeben: ")
if auswahl:
for i, eintrag in enumerate(adressbuch[int(auswahl)]):
eingabe = raw_input(("Eintrag: %s neu ? --> " % eintrag))
if eingabe:
adressbuch[int(auswahl)][i] = eingabe
while True:
eingabe = raw_input("Eintrag hinzufügen ? --> ")
if eingabe:
adressbuch[int(auswahl)].append(eingabe)
else:
break
def loeschen():
auswahl = raw_input("Bitte die Nummer des zu löschenden Eintrags eingeben: ")
if auswahl:
adressbuch[int(auswahl)] = None
def suchen():
auswahl = raw_input("Bitte einen Begriff eingeben: ")
treffer = []
for eintrag in adressbuch.itervalues():
if auswahl in eintrag:
treffer.append(" ".join(eintrag))
if treffer:
print "Die Suche ergab folgende Treffer:\n%s " % "\n".join(treffer)
else:
print "Leider kein Eintrag gefunden"
def speichern():
datei = file(pfad,"wb")
pickle.dump(adressbuch, datei)
datei.close()
def laden():
datei = file(pfad, "rb")
adressbuch = pickle.load(datei)
datei.close()
return adressbuch
if __name__ == "__main__":
pfad = os.getcwd()
if sys.platform == "win32":
pfad = pfad + "//adressbuch.bin"
elif sys.platform == "Linux1":
pfad = pfad + "/adressbuch.bin"
try:
adressbuch = laden()
print adressbuch
except IOError:
adressbuch = {}
speichern()
print "Es wurde ein neues Adressbuch erstellt!"
print "=============Menü============="
print "a - Adressen anzeigen"
print "e - eintragen"
print "b - bearbeiten"
print "l - loeschen"
print "s - suchen"
print "S - speichern"
print "E - Ende"
print "=============================="
while True:
auswahl = raw_input("Auswahl: ")
if auswahl == "a":
anzeigen()
elif auswahl == "e":
eintragen()
elif auswahl == "b":
bearbeiten()
elif auswahl == "l":
loeschen()
elif auswahl == "s":
suchen()
elif auswahl == "S":
print "Adressbuch wird neu gespeichert!"
speichern()
elif auswahl == "E":
antwort = raw_input("Speichern (j/n) ? ")
if antwort == "j":
speichern()
break
else:
break
else:
print auswahl, "ist eine ungültige Eingabe!"
print "Ende des Programms"