2014-09-24 169 views
0

因此,我正在編寫一個代碼,用於搜索用戶輸入密鑰的字典。爲此,我需要用戶鍵入他們想要的鍵,將該鍵的定義追加到列表中,然後打印列表。爲什麼我的if else語句被忽略

由於某些奇怪的原因,我的if serachT in dictionary行被忽略。程序會跳轉到else,完全跳過if。我已經刪除了其他以驗證if是否有效。關於爲什麼添加else的任何想法都會忽略if?

import csv 

def createDictionary(): 
    dictionary = {} 
    found = [] 
    searchT = input("What are you seraching for ") 
    fo = open("textToEnglish2014.csv","r") 
    reader = csv.reader(fo) 
    for row in reader: 
     dictionary[row[0]] = row[1] 
     if searchT in dictionary: 
      found.append(dictionary[row[0]]) 
      print(found) 
     elif searchT not in dictionary: 
      i = 0 
      #print("NF") 
      #exit() 
    print(found) 
    return found 

createDictionary() 
+1

我剛編輯你的代碼來改進格式,但我不完全確定我的縮進是正確的。請仔細檢查上面的代碼是否與您實際運行的代碼相匹配(特別是您所詢問的「if」和「else」行的縮進)。 – Blckknght 2014-09-24 06:38:52

+2

這與你的問題無關,但不是那麼長的'elif'語句,簡單的'else:'就足夠了。 – 2014-09-24 06:39:52

+0

你的代碼適合我,因爲它是。檢查@ TimPietzcker的其他問題的答案,但有正確的搜索詞,它運行if-clause就好了。 – Hamatti 2014-09-24 06:53:42

回答

0

您應該首先填寫您的字典,然後開始查找。幸運的是,這是你的情況簡單:

def create_dictionary(): 
    with open("textToEnglish2014.csv", newline="") as fo: # note the newline parameter! 
     reader = csv.reader(fo) 
     return dict(reader) 

(請注意,現在你的函數名是有道理的,不像以前)

現在你可以很容易地做到查找:

>>> dictionary = create_dictionary() 
>>> searchT = input("What are you searching for? ") 
What are you searching for? hello 
>>> dictionary.get(searchT) # returns None if searchT is not in dictionary 
goodbye