2016-04-07 16 views
2

Ich muss die Benutzereingabe mit einigen Schlüsselwörtern in einer Liste übereinstimmen.Iterieren durch Benutzereingabe und eine Liste

Ich habe mehrere Möglichkeiten versucht, dies zu tun, mit für, wenn und während. Selbst das Aufzählen wäre am besten, aber scheint es nicht zu schaffen. Ich muss berücksichtigen, dass der Benutzer mehrere Wörter eingeben kann. Schließlich wird der Code mit etwas anderem verknüpft sein und Dateien öffnen, die sich auf die Schlüsselwörter beziehen.

Beispielcode:

shopping = [ 
    'bananas', 
    'apples', 
    'chocolate', 
    'coffee', 
    'bread', 
    'eggs', 
    'vimto' 
    ] 

need = input ("please input what you need ") 
need = need.lower() 
need = need.split() 
index = 0 
while index < len(shopping): 
    for word in need: 
     if word == shopping[index]: 
      print ("Added to basket") 
      index +=1 

     if word != shopping[index]: 
      index +=1 

Ich brauche den Code auch eine Antwort zu drucken, wenn die Eingabe nicht ein Schlüsselwort entspricht. Im Moment wird das Schlüsselwort gefunden, aber wenn der Benutzer etwas nach dem Schlüsselwort eingibt, treten Fehler auf.

Antwort

1

Try this:

shopping = [ 
    'bananas', 
    'apples', 
    'chocolate', 
    'coffee', 
    'bread', 
    'eggs', 
    'vimto' 
    ] 

need = input ("please input what you need ") 
need = need.lower() 
need = need.split() 
error = False 
for word in need: 
    if word in shopping: 
     pass 
    else: 
     error = True 

if Error: print ("Not on the list") 
else: print ("Added to basket") 
+0

Danke, wenn ich Eingabe mehrerer Wörter um die Schlüsselwort es druckt für jedes Wort "Nicht auf der Liste" aus, Sorry, um ein Schmerz zu sein, aber weißt du, wie man das stoppt, so druckt es nur einmal, am Ende der Iteration durch th e Benutzereingabe? –

+0

Vielen Dank dafür, es kam zu dem Punkt, den ich überkompliziert hatte und konnte das Holz nicht durch die Bäume sehen. –

5

Sie brauchen diese verrückten Loops nicht.

Einfach nur

if thing in shopping_list: 
    # this is good! 
else: 
    # do something 

Alles in allem wird Ihr Code wie folgt aussehen:

need = input("Input what you need: ") 
need = [x.strip() for x in need.lower().strip().split()] 

for thing in need: 
    if thing in shopping_list: 
     print("Added this!") 
    else: 
     print("No, man, you aren't buying this!") 
Verwandte Themen