2017-11-27 1 views
0

Ich versuche einen Code zu erstellen, wo der Benutzer einen Satz eingibt und der Computer sagt ihnen, ob jedes Wort im Satz 'gültig' ist (also in Bezug auf Python, wenn jedes der Worte in ihrem Satz in den "validwords Liste ist.)Ob jedes Wort in einem Satz "gültig" ist - python

sentence = input("Please enter a sentence: ") 
validwords = ["hello","i","like","python"] 
word = sentence.split(" ") 
for word in sentence: 
     if word in validwords: 
      print ("I found a valid word: "+str(word)) 
     else: 
      print ("I found an invalid word: "+str(word)) 

jedoch die letzten fünf Zeilen scheinen nicht zu funktionieren, wie sie jeden Buchstaben in dem Satz zusammen geteilt statt jedes Wort.

+1

'Wort = sentence.split (“ „)' ... Du hast nicht eine Schleife über diese, Sie geschlungen über die 'sentence' Zeichen –

+0

Sie den Satz in eine Liste aufgeteilt und Nennen Sie es 'word', aber dann benutzen Sie es nie:' word = sentence.split ("") ' –

Antwort

1

Sie durchlaufen die Zeichen im ursprünglichen Satz statt der Liste der von Ihnen erstellten Wörter. Versuchen Sie folgendes:

sentence = input("Please enter a sentence: ") 
validwords = ["hello","i","like","python"] 
words = sentence.split(" ") 
for word in words: 
     if word in validwords: 
      print ("I found a valid word: " + word) 
     else: 
      print ("I found an invalid word: " + word) 
1

Sie haben Ihre Loop-Variablen verwechselt. Ich schlage vor,

validwords = set(validwords) # use a set for faster lookup times 
words = sentence.split() # split by all whitespace 
for word in words: 
    # check whether word in validwords 

Falls Sie sich für eine Kurzschreibweise der Suche zu überprüfen, ob alle getippten Worte gültig sind, können Sie:

validwords = set(validwords) # use a set for faster lookup times 
success = all(word in validwords for word in sentence.split()) 

Natürlich ist dies nicht für Vermittler Druck zulässt.

0

die letzten fünf Zeilen ... aufgeteilt jeden Buchstaben im Satz bis

Das ist die for-Schleife wäre. Zeichenfolgen sind durch Zeichen iterierbar. Sie haben die Eingabezeichenfolge und nicht den Teilungswert durchlaufen.

Versuchen

for word in sentence.split(" "): 
Verwandte Themen