Projekt Kundendienstsystem (Teil 2) |
Der Algorithmus |
Beispiele |
Aufgaben |
Wir erweitern unser Kundendienstsystem in zwei Richtungen: die Klasse Beantworter bekommt ein Dictionary mit Schlüsselwort-Wert Paaren. Etwa so:
self.antworten["default"]="Das klingt interessant. Erzählen Sie mehr... " self.antworten["frage"]= "Das steht im Handbuch! Haben Sie das Handbuch gelesen? "
"frage" ist der Schlüssel, und "Das steht im Handbuch! . . . " der zugehörige Wert. Statt einer Liste wird in der init-Methode jetzt ein Wörterbuch vereinbart:
self.antworten = {} # (Dicitonary)
Die zweite Veränderung betrifft die Methode genAntwort
, sie benötigt jetzt als Argument die Eingabe, da ja der entsprechende Eintrag aus dem Wörterbuch ausgewählt werden soll:
def genAntwort(self,eingabe=None): ^^^^^^^
Der Parameter eingabe
ist neu und enthält die Benutzereingabe
aus der Klasse Eingabeleser
. Der Aufruf in der Methode starten
aus der Klasse Kundendienstsystem schließlich:
antwort = self.antworter.genAntwort(eingabe) print antwort
bzw. kürzer:
print self.antworter.genAntwort(eingabe)<<<
Wie wählen wir die Antwort aus? Wir zerlegen die Eingabe in eine Folge von Wörtern (siehe die Methode eingabe2Liste(eingabe)
), gehen diese Liste einmal durch, bis wir in unserem Wörterbuch einen Treffer landen und geben diesen Treffer zurück. Haben wir bei der Suche in unserem Wörterbuch keinen Erfolg gehabt, so geben wir eine Standard-Antwort (Default-Fall) zurück.
Diese Problemlösung, also die Auswahl einer Standard-Antwort lässt sich noch verbessern (siehe Aufgabe 4).
def genAntwort(self,eingabe=None): antwort = '' if eingabe == None: antwort = self.antworten["default"] else: wortliste = self.eingabe2Liste(eingabe) # wortliste erzeugen print wortliste # Test # jetzt im Dictionary self.antworten das passende Statement suchen # Aufgabe 2 # Was passiert, falls kein Erfolg bei der Suche im Dictionary? # Aufgabe 3 return antwort<<<
findest du im Lehrer-Ordner rechts oben auf dem Desktop unter wspiegel u. s. w.:
genAntwort(self,eingabe=None)
benötigt ja ein zusätzliches Argument, wie ist dieses Problem in dem Skript Kundendienstsystem_infogk12.py
gelöst worden?Beenden durch Eingabe von 'Ade'! Wir sind die Lösung, wo ist das Problem? > Mein PC geht nicht mehr ['mein', 'pc', 'geht', 'nicht', 'mehr'] # die Wortliste! > ade Vielen Dank, bis zum nächsten Absturz!Erster Schritt: suche im Dictionary
self.antworten
das passende Statement aus. Wie? So!
self.antworten
haben? Dann sollte eine Default-Antwort zurückgegeben werden! Wie können wir diesen Fall erkennen?