2017-02-21 5 views
0

Also wollte ich einen kleinen Bot machen, der eine kleine Unterhaltung mit einem Benutzer halten könnte. Das einzige Problem ist, dass, wenn ich eines der Wörter in der Liste (Hallo oder Hallo) eintippe, dann bekomme ich die Willkommensnachricht, aber wenn ich etwas wie Hallo Computer eintippe gibt es mir die TESTPHRASE Nachricht. Gibt es etwas, das ich einfügen kann, damit es im Satz der Benutzereingabe aussieht und ein Wort in der benutzten Liste findet, damit es die passende Antwort sagen kann.Wie wird das Wörterbuch verwendet, um die Benutzereingabe zu überprüfen?

user_greetings = {"hello", "hi"} 
user_input = input("-") 
if user_input in user_greetings: 
    print("Welcome User") 
else: 
    print("TESTPHRASE") 
+1

versuchen, die Eingabe zu spalten und das erste Wort zu testen? – Nullman

Antwort

5

Wenn Sie in auf eine Zeichenfolge und ein Wörterbuch anwenden, wird es testen, ob die gesamte Zeichenfolge ein Schlüssel ist. Es sieht so aus, als ob Sie nach dem ersten Wort im Satz oder nach einem Wort im Satz im Wörterbuch suchen möchten.

In jedem Fall würden Sie die Eingabe auf Räume geteilt werden soll:

words = input('-').split() 

Wenn Sie das erste Wort überprüfen wollen, gehen fast wie früher:

if words[0] in user_greetings: 
    print("Welcome User") 
else: 
    print("TESTPHRASE") 

Wenn eine der die Worte sollten die Begrüßungsmeldung auslösen, verwenden any und einen Generator Ausdruck:

if any(x in user_greetings for x in words): 
    print("Welcome User") 
else: 
    print("TESTPHRASE") 
+0

Upvote für Generator. :) – ostergaard

+0

@ajostergaard. Froh, dass Sie es mögen :) –

+0

Vielen Dank, ich wollte es in der Lage sein, das Wort in der Benutzereingabe zu spüren und dann mit einer breiten Aussage zu antworten. Wenn ich jetzt etwas wie Hallo Computer oder Hallo Computer eintippe, läuft der Antworttext anstelle von TestPHRASE. – TechTorch

1

Ich erhalte einen Syntaxfehler für Ihren Code. Versuchen Sie, else in eine eigene Zeile zu verschieben. Ansonsten funktioniert dein Code für mich.

EDIT:

Lesen Sie die Frage erneut. Ihr Code prüft, ob "Hallo Computer" in Grüßen ist, das ist {"Hallo", "Hallo"}. "Hallo Computer" ist nicht in Grüßen. Sie könnten die Suche rückgängig machen und tun

Sonst müssen Sie "Hallo Computer" zu Ihrer Liste der Grüße hinzufügen.

+0

Das Problem ist nicht mit dem Code funktioniert, aber die Rückgabe eines Ergebnisses OP nicht erwartet. –

+0

Ich las die Frage erneut, ich missverstanden. Bearbeitet, um die Frage zu beantworten – jarcobi889

+1

Das funktioniert. Flippte meine Stimme. –

0

So etwas würde es tun:

greetings = ['hello', 'hi'] 
input = 'hello computer'.split() 
if set(greetings).intersection(set(input)): 
    print('Welcome') 
0

@Mad Physicist gibt eine sehr umfassende Antwort für diese und ich upvoted seine Antwort.

Es gibt einen anderen Weg, es zu tun, wenn ein Wort die Willkommensnachricht auslöst, egal, ob es aktiviert ist oder nicht.

user_greetings = {"hello", "hi"} 
user_input = input("-").split() 

# set process control. 
greeting = None 

for word in user_input: 
    if word.lower() in user_greetings: 
     print("Welcome User") 
    else: 
     greeting = True 

if greeting: 
    print("TESTPHRASE") 
Verwandte Themen