Habe das Problem gefunden - die Liste löeschen liest den Datensatz nicht so ein, wie ich es möchte.
Ich könnte die schleife so schreiben ?:
Code: Alles auswählen
for eintrag_loeschen in loeschen:
adressbuch.remove(eintrag_loeschen)
Code: Alles auswählen
for eintrag_loeschen in loeschen:
adressbuch.remove(eintrag_loeschen)
Code: Alles auswählen
for eintrag in eintraege:
adressbuch.remove(eintrag)
Code: Alles auswählen
if auswahl == 'L':
loeschliste.append(''.join(eintrag))
elif auswahl =='E':
eintragen(adressbuch)
adressbuch.remove(eintrag)
for eintrag_loeschen in loeschliste:
adressbuch.remove(eintrag_loeschen)
Aus welchem Grund auch immer die Liste nicht so heissen kann wie ich vorgeschlagen habe......kaytec hat geschrieben:Das mit dem Löschen habe ich nun so geändert. Der Name "loeschliste" ist bestimmt nicht schön - ich bin da nicht wirklich besonders kreativ.
gruss frankCode: Alles auswählen
if auswahl == 'L': loeschliste.append(''.join(eintrag)) elif auswahl =='E': eintragen(adressbuch) adressbuch.remove(eintrag) for eintrag_loeschen in loeschliste: adressbuch.remove(eintrag_loeschen)
Code: Alles auswählen
for element in liste:
adressbuch.remove(element)
Code: Alles auswählen
# -*- coding: cp1252 -*-
adressbuch = {1: ["Gnom","Gustav","Grummelweg", "8", "7777", "Buxtehude"],
2: ["Gnom","Brunhilde","Grummelweg", "8", "7777", "Buxtehude"],
3: ["Gnom","Detlef","Grummelweg", "8", "7777", "Buxtehude"]}
def anzeigen():
ausgabe =[str(eintrag[0]) + " " + " ".join(eintrag[1])+ \
"\n" for eintrag in adressbuch.iteritems()]
print "".join(ausgabe)
def eintragen():
eintraege = raw_input("Bitte Adresse eingeben: ")
schluessel = len(adressbuch.keys()) + 1
adressbuch[schluessel] = eintraege.split()
def bearbeiten():
auswahl = raw_input("Bitte die Nummer des Eintrags angeben: ")
eintrag = raw_input("Bitte Adresse eingeben: ")
adressbuch[int(auswahl)] = eintrag.split()
def loeschen():
auswahl = raw_input("Bitte die Nummer des zu löschenden Eintrags eingeben: ")
del(adressbuch[int(auswahl)])
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"
print "=============Menü============="
print "1. Adressen anzeigen"
print "2. - eintragen"
print "3. - bearbeiten"
print "4. - loeschen"
print "5. - suchen"
print "E für Ende"
print "=============================="
while True:
auswahl = raw_input("Auswahl: ")
if auswahl == "1":
anzeigen()
elif auswahl == "2":
eintragen()
elif auswahl == "3":
bearbeiten()
elif auswahl == "4":
loeschen()
elif auswahl == "5":
suchen()
elif auswahl == "E":
break
else:
print auswahl, "ist eine ungültige Eingabe!"
print "Ende des Programms"
Wenn es von BlackJack ist, dann ist es sicherlich auch gut.kaytec hat geschrieben:Das Programm hat BlackJack so umgeschrieben , da meines einen sehr "unpythonischen" Stil hatte und einige Fehler. Ich habe das umgeschriebene Programm verwendet, denn ich fand es halt gut so.
Wie gesagt: für wirklich eine große Adressenverwaltung würde ich sowieso auf eine Datenbank setzen.Eine Funktion für das Editieren hatte ich noch vor, da auch das Editieren Darstellungsfehler verursacht. Das Löschen über die keys finde ich persönlich problematisch, weil ich bei mehreren Adressen den Überblick verliere.
Naja, wenn du es so lieber hast, dann mach es so.Ich habe es in die Ausgabe gepackt, damit ich gleich die Möglichkeit zum Löschen habe. Es wäre natürlich auch über eine Funktion möglich, die in der Ausgabe aufgerufen wird.
gruss und dank frank
Code: Alles auswählen
def editieren(eintrag):
neu_eintrag = list()
index = 0
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
print '_' * 35
print 'alter Eintrag:', feld_wert
neu_eintrag.append((raw_input(feldname)) + '\n')
eintrag[index] = neu_eintrag[index]
index += 1
Code: Alles auswählen
def editieren(eintrag):
neu_eintrag = list()
index = 0
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
print '_' * 35
print feldname
print 'alter Eintrag:', feld_wert
eingabe = raw_input('neuer Eintrag:')
if eingabe != '':
neu_eintrag.append((eingabe) + '\n')
eintrag[index] = neu_eintrag[index]
elif eingabe == '':
neu_eintrag.append(' ')
index += 1
Code: Alles auswählen
def testen(adressbuch):
testergebnis = list()
test_eintrag = list()
for eintrag in adressbuch:
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
if feldname == 'Geburtstag:':
geburtstag = feld_wert.split('.')
datum =(strftime('%x'))
datum = datum.split('/')
datum.pop()
geburtstag.pop()
if datum[0] == geburtstag[1]:
test_feld_wert = feld_wert
test_eintrag = eintrag
auswertung = (float(datum[1]) - float(geburtstag[0])) * -1
if 1 < auswertung <= 7:
test_eintrag.remove(test_feld_wert)
test_feld_wert += 'Geburtstag ist in ' +
str(int(auswertung)) + ' Tagen'
test_eintrag.append(test_feld_wert)
testergebnis.append(test_eintrag)
elif auswertung == 1:
test_eintrag.remove(test_feld_wert)
test_feld_wert += '!Geburtstag ist morgen!'
test_eintrag.append(test_feld_wert)
testergebnis.append(test_eintrag)
elif auswertung == 0:
test_eintrag.remove(test_feld_wert)
test_feld_wert += '!!!der Geburtstag ist heute!!!'
test_eintrag.append(test_feld_wert)
testergebnis.append(test_eintrag)
ausgabe(testergebnis, 'im Adressbuch gefunden')
Code: Alles auswählen
def testen(adressbuch):
for eintrag in adressbuch:
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
if feldname == 'Geburtstag:':
geburtstag = feld_wert.split('.')
datum =(strftime('%x'))
datum = datum.split('/')
datum.pop()
geburtstag.pop()
if datum[0] == geburtstag[1]:
auswertung = float(geburtstag[0]) - float(datum[1])
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
print '_' * 35
print feldname, feld_wert
if 1 < auswertung <= 7:
print 'Geburtstag ist in ' + str(int(auswertung)) + ' Tagen'
elif auswertung == 1:
print '!Geburtstag ist morgen!'
elif auswertung == 0:
print '!!!der Geburtstag ist heute!!!'
Code: Alles auswählen
try:
if datum[0] == geburtstag[1]:
auswertung = float(geburtstag[0]) - float(datum[1])
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
print '-' * 35
print feldname, feld_wert
print '=' * 35
if 1 < auswertung <= 7:
print 'Geburtstag ist in ' + str(int(auswertung)) + ' Tagen'
elif auswertung == 1:
print '!Geburtstag ist morgen!'
elif auswertung == 0:
print '!!!der Geburtstag ist heute!!!'
print '=' * 35
raw_input()
except IndexError:
for feldname, feld_wert in zip(FELDNAMEN, eintrag):
print '-' * 35
print feldname, feld_wert
print '=' * 35
print 'Dieser Eintrag hat eine falsche Geburtstagsangabe'
continue
Code: Alles auswählen
print '-' * 35
Code: Alles auswählen
auswertung = float(geburtstag[0]) - float(datum[1])
Code: Alles auswählen
auswertung = float(geburtstag[0] - datum[1])
Code: Alles auswählen
elif auswertung == 1
elif auswertung == 0