2011-10-06 80 views
0

現在我的燒錄卡的遊戲使用prepvocab()方法,我如何建模一組可擴展的定義/術語對?

  • 定義了一個星期的價值方面的術語和翻譯的字典
  • 補充說,本週的術語的說明,
  • 混爲一談他們進入用戶選擇他們的「周」來研究的字典列表

每次我添加一個新的一週的條款和翻譯,我堅持增加另一個元素到可用字典的列表。我絕對可以看到這不是一件好事。

class Vocab(object): 

def __init__(self): 
    vocab = {} 
    self.new_vocab = vocab 
    self.prepvocab() 

def prepvocab(self): 
    week01 = {"term":"translation"} #and many more... 
    week01d = "Simple Latvian words" 

    week02 = {"term":"translation"} 
    week02d = "Simple Latvian colors" 

    week03 = {"I need to add this":"to self.selvocab below"} 
    week03d = "Body parts" 

    self.selvocab = [week01, week02] #, week03, weekn] 
    self.descs = [week01d, week02d] #, week03, weekn] 
    Vocab.selvocab(self) 

def selvocab(self): 
    """I like this because as long as I maintain self.selvocab, 
    the for loop cycles through the options just fine""" 
    for x in range(self.selvocab): 
     YN = input("Would you like to add week " \ 
        + repr(x + 1) + " vocab? (y or n) \n" \ 
        "Description: " + self.descs[x] + " ").lower() 
     if YN in "yes": 
      self.new_vocab.update(self.selvocab[x]) 
    self.makevocab() 

我可以肯定地看到,這將是一個痛苦與20 +是的沒有問題。我現在正在閱讀詛咒,並且正在考慮立即打印所有的描述,並讓用戶挑選他們想要爲這一輪學習的所有內容。

如何更好地維護我的代碼的這部分?任何人都得到徹底的改革,不是那麼......程序性的?

回答

0

您應該以某種方式在文本文件中存儲您的術語:翻譯對和描述。您的程序應該解析文本文件並發現所有可用的課程。這將允許您擴展可用的課程集,而無需編輯任何代碼。

至於你選擇的課程,寫一個print_lesson_choices函數,向用戶顯示可用的課程和描述,然後詢問他們的輸入來選擇它們。不要問他們的問題,每節課的,爲什麼不能讓你的提示是這樣的:

self.selected_weeks = [] 

def selvocab(self): 
    self.print_lesson_choices() 
    selection = input("Select a lesson number or leave blank if done selecting: ") 
    if selection == "": #Done selecting 
     self.makevocab() 
    elif selection in self.available_lessons: 
     if selection not in self.selected_weeks: 
      self.selected_weeks.append(selection) 
      print "Added lesson %s"%selection 
     self.selvocab() #Display the list of options so the user can select again 
    else: 
     print "Bad selection, try again." 
     self.selvocab() 
+0

謝謝你的建議。我研究過這個,儘管我不喜歡把Python世界作爲一個簡單的學習輔助工具的想法,但我確實發現[this](http://www.python.org/workshops/1997-10/) proceedings/shprentz.html),這正是我正在尋找的(授予它是矯枉過正)。 – Droogans