Dictionary 如何对一组可伸缩的定义/术语对进行建模?

Dictionary 如何对一组可伸缩的定义/术语对进行建模?,dictionary,scalability,python,Dictionary,Scalability,Python,现在我的抽认卡游戏使用的是prepvocab方法 将一周的术语和翻译定义为字典 添加对该周条款的描述 将它们放入字典列表中,用户可以在其中选择学习的周数 每次我添加新一周的术语和翻译,我都会在可用词典列表中添加另一个元素。我可以肯定地认为这不是一件好事 class Vocab(object): def __init__(self): vocab = {} self.new_vocab = vocab self.prepvocab() def prepvocab(sel

现在我的抽认卡游戏使用的是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+是非问题。我现在正在阅读诅咒,并且正在考虑一次打印所有的描述,让用户选择所有他们想学习的内容


如何更好地维护代码的这一部分?任何人都有一个根本性的改变,但不是这样……程序性的?

你应该以某种方式将你的术语:翻译对和描述存储在文本文件中。然后,您的程序应该解析文本文件并发现所有可用的课程。这将允许您扩展可用的课程集,而无需编辑任何代码

对于课程选择,请编写一个打印课程选择功能,向用户显示可用的课程和说明,然后在选择课程时要求用户输入。与其在每节课上都问他们一个问题,为什么不做如下提示:

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()

这意味着创建一个界面来修改前端的每周课程需要一些努力,但这是值得的。

感谢您的建议。我对此进行了研究,虽然我不喜欢离开python世界去获得这样一个简单的学习帮助,但我确实发现,这是我一直在寻找的,当然这是过分的。