2016-03-23 105 views
0

嗨,這是我的代碼由於某種原因後最後一個循環代碼只是直接跳到else語句並打印它約4次,然後去if語句並打印解決方案。請有人可以幫忙。Python代碼跳到其他

while True: 
    d = {} 
    with open("keyword_database.txt") as f: 
     for line in f: 
      (key,val) = line.split(":") 
      d[str(key)] = val 
    try: 
     userinput=input(str("What is the problem with your phone?\nEnter here in lower:")) 
     print() 
    except: 
     print ("Invalid Input") 
    for word in userinput.split(): 
      if word in d: 
       print(d[word]) 
       print() 
      else: 
       print("Please Re-Phrase your problem and Try Again") 
       print() 

這就是它運行代碼後打印的內容。

您的手機有什麼問題?較低的進入這裏:我的手機是 破

請重新短語你的問題,然後再試一次

請重新短語你的問題,然後再試一次

請重新短語你的問題,然後再試一次

問題=損壞的解決方案=把你的手機送到維修店,然後從那裏修理它,但是請記住,如果有人打開你的蘋果電話除了蘋果之外,那麼保修將是VOID(無效)。

+4

這是因爲' 'my'','' phone''和''is''在'D'都沒有。因此,對於這三個詞,您的'else'分支將被使用。你需要重新思考你如何測試單詞匹配。 –

回答

0

試試這個:

for word in userinput.split(): 
    result = "" 
    if word in d: 
     result += d[word] + "\n" 

if (len(result) == 0): 
    result += "Please Re-Phrase your problem and Try Again\n" 
print (result)