2014-02-17 36 views
0

我有這樣的代碼,效果很好。它的工作原理的方式,我必須鍵入功能,如足球的games.soccer模塊是活動的,那麼我可以輸入查詢,如「最新成績」,之後再次我關閉這個那麼對於這個工作類型autocare。我需要在編碼方式只需輸入查詢例如,「最新成績」 ..那麼這將遍歷所有進口功能,在播放字典找到answer.Here幫助是代碼我如何遍歷所有進口功能

import games 
import clauseq11 
PLAY = { 
    'soccer': games.soccer, 
    'nba': games.nba, 
    'autorace': games.autorace, 
    'search_name': clauseq11.search_name, 
    'answer_neg1': clauseq11.answer_neg1, 
    } 

while True: 
    question = input('Please enter your question: ').lower() 
    if not question: 
     break 
    for key, func in PLAY.items():    
     if key in question: 
      func() 
      break 
    else: 
     print('Sorry I do not have an answer! :(') 
+0

請說明您的具體問題或添加額外的細節,突顯正是你需要的。正如目前所寫,很難確切地說出你在問什麼。參見[如何提出頁](http://stackoverflow.com/help/how-to-ask)尋求幫助澄清這一問題。 – jonrsharpe

回答

1

我猜你要找的是一個方式來獲得用戶的功能名稱,如果您導入了一個模塊中存在該名稱執行的功能。這裏是所有你需要實現它:

實例模塊t.py

def foo(): print 'foo here!' 
def bar(): print 'bar here!' 

導入模塊:

In [1]: import t 

找出哪些功能你的模塊有:

In [2]: print dir(t) 
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'bar', 'foo'] 

在您的模塊中執行一個具有給定名稱的功能:

In [3]: getattr(t, 'foo')() 
foo here! 
+0

謝謝!函數應該回答(打印)到一個被詢問的查詢中。我頭疼的是用相同的查詢,直到正確的答案 – wakamdr

+1

遍歷功能我不完全明白你的意思,但你不必遍歷功能,真的。你只是假設函數在那裏,並試圖調用它。如果它不在那裏(比如說,用戶犯了一個錯字),就會拋出一個異常(KeyError),你必須去捕捉並處理這個異常(比如說,給用戶打印'function not found') – piokuc

+0

謝謝,我的意思是當用戶從導入的許多函數中鍵入查詢,答案應在通過函數字典迭代後打印 – wakamdr