Example #1
0
def EightsQuizFunction(vocabWords):
    """Cut the quiz into eights, then quiz over each section until 100% accuracy"""
    session = dict()
    vocabWords = ShuffleList(vocabWords)
    def sortingFunction(x):
        if x['tried'] != 0:
            return x['failed'] / x['tried']
        else:
            return 1
    vocabWords.sort(key=sortingFunction,reverse=True)
    sections = [x for x in CutIntoLengths(vocabWords,8)]
    lengthOfSections = len(sections)
    for count,section in enumerate(sections):
        correctWords = dict([(x['question'],False) for x in section])

        def getWrongAnswers(s):
            for x in s:
                if correctWords[x['question']] == False:
                    yield x

        while(False in correctWords.values()):
            #wrongAnswers = [x for x in section if correctWords[x['question']] == False]
            wrongAnswers = [x for x in getWrongAnswers(section)]
            lastWrongAnswer = wrongAnswers[-1]
            section = ShuffleList(section)
            firstWrongAnswer = [x for x in getWrongAnswers(section)][0]
            if firstWrongAnswer == lastWrongAnswer:
                section = section[1:] + [lastWrongAnswer]
            Clear()
            print('{1} of {2} {0}%'.format(100.0 * count / lengthOfSections, count, lengthOfSections))
            for question in section:
                q = question["question"]
                alternateAnswers = [] if 'alternates' not in question else question['alternates']
                if(correctWords[q] == True):
                    continue
                (result, newAlternates) = AskQuestion(q, question['answer'], alternateAnswers)
                if q not in session.keys():
                    session[q] = {'tried' : 0, 'failed' : 0}
                if result == None:
                    return (session, vocabWords)
                elif result == False:
                    question['failed'] += 1
                    session[q]['failed'] += 1
                    correctWords[q] = False
                    while result == False:
                        if result != "":
                            Clear()
                        (result, newAlternates) = AskQuestion(q,question['answer'], alternateAnswers)
                else:
                    correctWords[q] = True
                question['tried'] += 1
                session[q]['tried'] += 1
                question['lastAsked'] = GetTime()
                question['alternates'] = newAlternates
    return (session, vocabWords)
Example #2
0
def EightsQuizFunction(vocabWords):
    """Cut the quiz into eights, then quiz over each section until 100% accuracy"""
    session = dict()
    vocabWords = ShuffleList(vocabWords)
    def sortingFunction(x):
        if x['tried'] != 0:
            return x['failed'] / x['tried']
        else:
            return 1
    vocabWords.sort(key=sortingFunction,reverse=True)
    sections = [x for x in CutIntoLengths(vocabWords,8)]
    lengthOfSections = len(sections)
    for count,section in enumerate(sections):
        wrongWords = [x for x in section]
        while(wrongWords != []):
            lastWrongWord = wrongWords[-1]
            wrongWords = ShuffleList(wrongWords)
            if wrongWords[0] == lastWrongWord:
                wrongWords = wrongWords[1:] + [lastWrongWord]
            Clear()
            print('{1} of {2} {0}%'.format(100.0 * count / lengthOfSections, count, lengthOfSections))
            futureWrongWords = []
            for word in wrongWords:
                question, answer = word['question'], word['answer']
                result = AskQuestion(question,answer)
                if question not in session.keys():
                    session[question] = {'tried' : 0, 'failed' : 0}
                if result == None:
                    return (session, vocabWords)
                elif result == False:
                    word['failed'] += 1
                    session[question]['failed'] += 1
                    futureWrongWords.append(word)
                    while result == False:
                        if result != "":
                            Clear()
                        result = AskQuestion(question,answer)
                word['tried'] += 1
                session[question]['tried'] += 1
                word['lastAsked'] = GetTime()
            wrongWords = futureWrongWords    
    return (session, vocabWords)