Ich beschäftige mich erst seit Kurzem mit Python (ich hatte bereits - wenn auch eher schlechte - Vorkenntnisse in Delphi).
Ich habe "A Byte of Python" durchgelesen und nun zur Übung dieses Adressbuch geschrieben:
Code: Alles auswählen
#!/usr/bin/Python
# -*- coding: cp1252 -*-
import pickle
class Adressbuch:
daten = {}
# Falls nicht vorhanden, wird "adressbook.data"
# erstellt. Ansonsten wird der Inhalt der Datei
# geladen.
try:
f = file('adressbook.data')
daten = pickle.load(f)
f.close()
except IOError:
f = file('adressbook.data', 'w')
f.close()
except:
pass
def __init__(self, datenliste):
self.datenliste = datenliste
def eintragen(self):
"""Erstellt einen neuen Eintrag im Adressbuch."""
self.datenliste.append(raw_input('Geben Sie den Namen der Person ein:\n'))
self.datenliste.append(raw_input('Geben Sie die Adresse ein:\n'))
self.datenliste[1] = 'Adresse: ' + self.datenliste[1]
self.datenliste.append(raw_input('Geben Sie die Email-Adresse ein:\n'))
self.datenliste[2] = 'Email-Adresse: ' + self.datenliste[2]
self.datenliste.append(raw_input('Geben Sie die Telefonnummer ein:\n'))
self.datenliste[3] = 'Telefonnummer: ' + self.datenliste[3]
Adressbuch.daten[self.datenliste[0]] = self.datenliste[1:]
schreiben = file('adressbook.data', 'w')
pickle.dump(Adressbuch.daten, schreiben)
schreiben.close()
def auflisten(self):
"""Listet alle im Adressbuch enthaltenen Eintraege auf."""
for a, b in Adressbuch.daten.items():
print a
for b in Adressbuch.daten[a]:
print b
def loeschen(self):
"""Loescht gegebenen Eintrag oder das gesamte Adressbuch."""
try:
eingabe = raw_input('Geben Sie den zu loeschenden Eintrag ein \
(um das gesamte Adressbuch zu leeren, geben Sie "--all" ein):\n')
if eingabe == '--all':
Adressbuch.daten = {}
f = file('adressbook.data', 'w')
pickle.dump(Adressbuch.daten, f)
f.close()
print '\nDas Adressbuch wurde geleert.\n'
else:
del Adressbuch.daten[eingabe]
f = file('adressbook.data', 'w')
pickle.dump(Adressbuch.daten, f)
f.close()
print '\nDer Eintrag wurde entfernt.\n'
except:
print 'Der Eintrag konnte nicht entfernt werden.\n'
def suche(self):
"""Sucht nach gegebenem Eintrag; wird dieser nicht gefunden,
wird eine Fehlermeldung ausgegeben."""
try:
eingabe = raw_input('Geben Sie den zu suchenden Eintrag ein:\n')
for a in Adressbuch.daten[eingabe]:
print a
except:
print 'Der Eintrag wurde nicht gefunden.\n'
def main():
while True:
print 'Neuer Eintrag : --add\nAuflisten : --list\nEintrag loeschen \
: --del\nEintrag suchen : --search\nBeenden : --end\n'
option = raw_input('Was moechten Sie tun?\n')
if option == '--add':
datenliste = Adressbuch([]).eintragen()
elif option == '--list':
Adressbuch('').auflisten()
elif option == '--del':
Adressbuch('').loeschen()
elif option == '--search':
Adressbuch('').suche()
elif option == '--end':
break
if __name__ == '__main__':
main()
Ich werde jetzt mit "Python Ge-Packt" anfangen; dort wird Tkinter behandelt.
Ist Tkinter empfehlenswert (für den Einstieg) oder sollte ich mir eine andere GUI anschauen?
MfG,
SynTech
edit:
-Änderungen am Code vorgenommen.