From 40181480b652eb308aa0e5073582ae7e664d8bb1 Mon Sep 17 00:00:00 2001 From: Ezekiel Date: Thu, 3 Jun 2021 14:47:26 +0200 Subject: [PATCH] poc_hugo finished --- poc_hugo.py | 113 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 89 insertions(+), 24 deletions(-) diff --git a/poc_hugo.py b/poc_hugo.py index d89302c..736f9dc 100644 --- a/poc_hugo.py +++ b/poc_hugo.py @@ -1,11 +1,8 @@ #!/usr/bin/python3 -import pathlib -import time import os import csv import random -from collections import Counter from rich.console import Console from rich.markdown import Markdown @@ -18,24 +15,11 @@ def _create_dictionary(): return data -# Count the number of questions and generate a list of IDs -def _count_questions(dictionary): - questions_id = [0] - questions_counter = 0 - for questions in dictionary: - questions_counter += 1 - questions_id.append(questions_counter) - questions_id.pop() - return questions_id - - -def _get_question(dictionary, questions_id): - questions_numbers = questions_id - - print(questions_numbers) - - def _print_question(question_asked): + """ + :param question_asked: + :return: + """ os.system("clear") c = Console() actual_question = "# {}".format(question_asked["QUESTION"]) @@ -51,15 +35,96 @@ def _print_question(question_asked): answer = Markdown(answer) c.print(answer) -def _test_question(question_asked) + +def _has_multiple_answer(question_asked): + """ + :param question_asked: + :return Boolean: + """ + answers = str(question_asked["ANSWER"]).split() + try: + if answers[1]: + return True + except: + return False + + +def _one_digit_answer(question_asked): + """ + :param question_asked: + :return Boolean: + """ + print(question_asked["ANSWER"]) + result = input("What's your answer? ") + if result == question_asked["ANSWER"]: + return True + else: + return False + + +def _multiple_digit_answer(question_asked): + """ + :param question_asked: + :return Boolean: + """ + answers = input("What's your answer? ").split(" ") + right_answers = str(question_asked["ANSWER"]).split(" ") + if len(answers) == 0: + return False + for answer in answers: + try: + test = right_answers.index(answer) + right_answers.pop(test) + except: + return False + if len(right_answers) == 0: + return True + else: + return False + + +def _test_question(question_asked): + """ + :param question_asked: + :return Boolean: + """ + if _has_multiple_answer(question_asked): + return _multiple_digit_answer(question_asked) + else: + return _one_digit_answer(question_asked) + + +def _print_success(result): + """ + :param result: + """ + c = Console() + if result: + msg = "## Good job!" + else: + msg = "## that's not the right answer..." + md = Markdown(msg) + c.print(md) + + +def print_stats(counter): + """ + :param counter: + """ + success = counter.count(True) + fail = counter.count(False) + print("{} out of {} correct!".format(success, success + fail)) + input("press ENTER for a new question or CTRL-C to quit") + if __name__ == "__main__": path = "./data/list_book1.csv" + counter = [] dictionary = _create_dictionary() - questions_id = _count_questions(dictionary) random.shuffle(dictionary) for question in dictionary: _print_question(question) result = _test_question(question) - - #_get_question(dictionary, questions_id) \ No newline at end of file + counter.append(result) + _print_success(result) + print_stats(counter)