2016-06-22 9 views
2

私の目標:ユーザーにトラブルシューティングシステムのための独自のクエリを入力させようとしています。ユーザーの入力に 'keywords'配列にあるキーワードがある場合、解答は 'answers'配列の同じインデックスから与えられます。ループが配列内の正しい解を反復していない間に

問題:構文エラーはありませんが、論理エラーはありません。 'keywords'配列の第1と​​第2のインデックスに対して、このキーワードが入力された場合、正しい解が与えられます。しかし、 'keywords'配列の3番目と4番目のインデックスについては、 'answers'配列の異なるインデックスから間違った解を出力します。

マイコード:

answers = ['dry it out','replace screen','delete any apps that are not needed','restart it'] 
keywords = ['wet','cracked','download','unresponsive'] 
i = 0 
while i <= 5: 
    user_query = str(input('What\'s the problem?\n>> ')).lower() 
    for keyword in keywords: 
     while keyword[i] not in user_query: 
      i = i + 1 
     if keyword[i] in user_query: 
      print(answers[i]) 
      i = 10 
      break 
     if i >= 5: 
      print('contact the supplier') 
      break 

答えて

1

私はこれは少し良い仕事かもしれないと思う:

answers = ['dry it out','replace screen','delete any apps that are not needed','restart it'] 
keywords = ['wet','cracked','download','unresponsive'] 
responses = {k:v for k,v in zip(keywords,answers)} 

def getAnswer(query, solutions): 
    for keyword in solutions: 
     if keyword in query: 
      return solutions[keyword] 
    return "Contact the supplier" 

user_query = str(input('What\'s the problem?\n>> ')).lower() 
print(getAnswer(user_query,responses)) 

出力例:

What's the problem? 
>> screen cracked 
replace screen 
+0

これは、複数のキーワードが一致した場合の解決策リストを返すように簡単に拡張することができます –

2

あなたはfor keyword in keywords:で、キーワードが文字列であることを覚えておく必要があり、かつiを経由して、それをインデックス化して個々の文字を引き出しています。代わりに、あなたのような何かをしたい:

for keyword in keywords: 
    if keyword in user_query: 
     # Handle things here 

または

for i in range(len(keywords)): 
    if keyword[i] in user_query: 
     # Handle things here 

この第二のアプローチは、あなたがanswers配列内の対応するエントリを参照することができますので、それは私がお勧めしたいものです。

あなたはまだ物事をきれいにし、ユーザーがコード内の正しい場所にクエリを入力していることを確認する必要があります。このコードはforループに取り付けたelseブロックを使用している

answers = ['dry it out','replace screen','delete any apps that are not needed','restart it'] 
keywords = ['wet','cracked','download','unresponsive'] 
user_query = str(input('What\'s the problem?\n>> ')).lower() 


for i in range(len(keywords)): 
    if keyword[i] in user_query: 
     print(answers[i]) 
     break 
else: 
    print('contact the supplier') 

:私の推測では、あなたは(あなたが確認する必要がありますが)したいコードがあるということです。何が起きているのかを理解するために、hereを読んでみることをお勧めします。

2
answers = ['dry it out','replace screen','delete any apps that are not needed','restart it'] 
keywords = ['wet','cracked','download','unresponsive'] 

query = input('What\'s the problem?\n>> ').lower() 

try: 
    print(answers[keywords.index(query)]) 
except ValueError: 
    print("Contact the supplier.") 

ここでは、代わりのために必要とするインデックス機能で構築されたリストを使用する別のオプションです。ループ。

関連する問題