Übersicht

 => Projekt Kundendienstsystem (Teil 2)
 => Der Algorithmus
 => Beispiele
 => Aufgaben

Projekt Kundendienstsystem

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)
<<<

Der Algorithmus

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

<<<

Beispiele

findest du im Lehrer-Ordner rechts oben auf dem Desktop unter wspiegel u. s. w.:

<<<

Aufgaben

  1. Für die folgenden Aufgaben benötigst du das Python-Skript Kundendienstsystem_infogk12.py! Lade diese Datei in dein Verzeichnis und los gehts: die Methode genAntwort(self,eingabe=None) benötigt ja ein zusätzliches Argument, wie ist dieses Problem in dem Skript Kundendienstsystem_infogk12.py gelöst worden?

    ________________________________________________________

    ________________________________________________________



  2. Das Skript ist noch nicht fertig:
    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!

  3. Zweiter Schritt: Was passiert, falls wir keinen Erfolg bei der Suche im Dictionary self.antworten haben? Dann sollte eine Default-Antwort zurückgegeben werden! Wie können wir diesen Fall erkennen?

    ________________________________________________________



  4. Dritter Schritt: Die Auswahl einer Default-Antwort kann mit dem Zufalls-Prinzip kombiniert werden! Baue deine Version an geeigneter Stelle ein, viel Glück!

<<<
    W. Spiegel, E-Mail: walter.spiegel@web.de