#dictionary #scalability #python
#словарь #масштабируемость #python
Вопрос:
Прямо сейчас в моей карточной игре используется 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 и думал о том, чтобы распечатать все описания сразу и позволить пользователю выбрать все, что они хотели бы изучить для раунда.
Как мне лучше поддерживать эту часть моего кода? У кого-нибудь был радикальный пересмотр, который не был таким … процедурным?
Ответ №1:
Вы должны каким-то образом сохранить свои пары термин: перевод и описания в текстовом файле. Затем ваша программа должна проанализировать текстовый файл и найти все доступные уроки. Это позволит вам расширить набор доступных уроков без необходимости редактировать какой-либо код.
Что касается вашего выбора уроков, напишите 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()
Комментарии:
1. Спасибо за ваше предложение. Я изучил это, и, хотя мне не нравится идея покидать мир python ради такого простого учебного пособия, я нашел это , и это то, что я искал (конечно, это перебор).
Ответ №2:
Добавление объектов в базу данных означает, что потребуется приложить некоторые усилия для создания интерфейса для изменения еженедельных уроков из интерфейса, но оно того стоит.