2011-10-06 4 views
0

今、私のフラッシュカードゲームは辞書 スケーラブルな一連の定義と用語のペアをどのようにモデル化できますか?

  • は、その週の用語
  • の記述を追加すると、I

    • はにそれらをひとまとめ用語の週間分のための用語と翻訳を定義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 +はいの質問なしで痛みになることは間違いありません。私は現時点でcursesを読んでいて、すべての説明を一度に印刷し、ユーザーがラウンドのために勉強したいものすべてを選択させることを考えていました。

    私のコードのこの部分をより良く維持する方法を教えてください。誰もが根本的なオーバーホールをしているわけではありません。

  • 答えて

    0

    Pickling objects into a databaseは、フロントエンドから毎週のレッスンを変更するためのインタフェースを作成するためにいくつかの努力を取るよ意味するが、あります時間の価値がある

    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

    関連する問題