2016-08-24 7 views
1

設定された量の質問をするコードを書いています。 私はユーザに回答を入力させようとしており、コードはユーザが複数の単語のリストにある単語を入力したかどうかをチェックします。ユーザ入力に配列の単語が含まれていないかチェックする - Python 3

keywordlist = ("pain", "suffering", "hurt") 
question1 = input("how are you feeling?") 
if question1.lower() in keywordlist: 
    print("something here") 

私は答えをStackOverflowのを閲覧し終わったと文字列を分割についての記事に出くわしたが、私はそれを理解していませんでした。それはthis質問でした。このリンクを使用して

私はに私のコードを切り替える:

if any(word in Question1 for word in keywordlist.split(",")): 

が、私はエラーを得た:

AttributeError: 'tuple' object has no attribute 'split' 

私は、Pythonに新しいですし、行うための正確な方法のダウン易しく書き直さバージョンが必要ですこの。

+2

現在のコードにはどのような問題がありますか? – Wajahat

+0

@AndrewL。タプルはここのリストよりも正確であるため、値は変更されることはありません。 – karlosss

+0

@karlosssあなたはどういう意味ですか? –

答えて

1

ようにあなたが入力するユーザーに文をしたいと任意の単語がキーワードリストにあるかどうかを確認したいと仮定すると:

keywordlist = ("pain", "suffering", "hurt") 
question1 = input("how are you feeling?") 
input_words=question1.lower().split() 
for word in input_words: 
    if word in keywordlist: 
     print("something here") 

あなたが呼ばれるのでif any(word in Question1 for word in keywordlist.split(",")):はあなたにそのエラーを与えた理由は、タプルであるkeywordlist上のsplit()メソッド。だから間違いは、あなたが間違っていたことを正確に伝えています。入力を単語に分割したい場合、keywordlistにはすでに単語がタプルに分割されています。

+0

ありがとうございます!それは私がそれを感謝する笑を探していたダウンバージョンです! Thumbs up(:この質問に投稿された両方のメソッドは機能しました!ありがとう –

0

文字列を分割すると機能します。各個別の単語がリスト内の要素になるように、スペースで分割することができます。そう

keywordlist = ("pain", "suffering", "hurt") 
question1 = input("how are you feeling?") 
question_parts = question1.split(" ") 
for part in question_parts: 
    if part.lower() in keywordlist: 
     print("something here") 
+0

この返信に追加するには、ユーザーが「苦しんでいる」と入力した場合、入力を分割()すると '(" I "、" am "、" suffering ")のようなリストになります。各単語があなたの 'keywordlist'にあるかどうか確認してください。 – Av4t4r

+0

これは実際にはうまくいきました。私は参考に使用したものと非常に似ている私の実際のコードに入れました。問題は次のとおりです: 質問1に「私は痛みがあり、たくさん傷ついています。 "ここに何か" 2回印刷されます... –

関連する問題