From 8f11bd073df16e5de43c0363d6be14001bfe066a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Wikle=20DUBARD?= <loic97429@gmail.com> Date: Sat, 17 Aug 2019 12:50:03 +0200 Subject: [PATCH] script useless/quizz.py complet --- CHANGELOG.md | 3 ++ useless/quizz.py | 110 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 104 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c717ce1..8095597 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ ## 17 aout 2019 **Ajouts:** - meteo : on peut demander des prévisions dans n heures +- script useless/quizz.py complet, manque plus que de l'implementé dans le script principal +**Fixes:** +- sons compris/pascompris plus intuitifs --- diff --git a/useless/quizz.py b/useless/quizz.py index 95f7c1f..5d9fdf8 100755 --- a/useless/quizz.py +++ b/useless/quizz.py @@ -3,32 +3,124 @@ import requests # import urllib -import html +# import html from random import shuffle from googletrans import Translator translator = Translator() -def escape(html): - return html.encode('utf8').replace('"', "'") +# def escape(html): +# return html.encode('utf8').replace('"', "'") -def quizz(): +class Quizz(object): + @staticmethod + def quizz(): req = requests.get("https://opentdb.com/api.php?amount=1&difficulty=easy") al = req.json() pas_reponse = [] rep = al['results'][0] - question = html.escape(rep['question']) - reponse = html.escape(rep['correct_answer']) + question = rep['question'] + reponse = rep['correct_answer'] choix = [reponse] for f in rep['incorrect_answers']: - pas_reponse.append(html.escape(f)) - choix.append(html.escape(f)) + pas_reponse.append(f) + choix.append(f) shuffle(choix) return {'question': translator.translate(question, src='en', dest='fr').text, 'reponse': reponse, 'choix': choix, 'pas_reponse': pas_reponse} + def __init__(self): + self._status = 0 # 0 : not started, 1 : started, 2 : reponse trouvée + self._quizz = Quizz.quizz() + self._essais = {} + self._points = {} + self._round = 0 + + def get_status(self): + if self._status == 2: + return 2, 'Vous avez déjà trouvé la réponse, demandez une nouvelle question.' + elif self._status == 1: + return 1, 'La partie est en cours.' + else: + return 0, 'la partie n\'a pas commencé.' + + def get_question(self): + return self._quizz['question'] + + def start(self): + assert self._status == 0 + if self._status == 0: + self._status = 1 + self._round = 1 + + def get_round(self): + return self._round + + def new(self): + self._quizz = Quizz.quizz() + self._essais = {} + self._status = 1 + self._round += 1 + return self.get_question() + + def answer(self, proposition, personne=''): + assert self._status == 1 + if proposition == '!indice': + return self.indice() + if proposition == '!scoreboard': + return self.scoreboard() + if '!scoreboard' in proposition: + return self.scoreboard(proposition.replace('!scoreboard ', '')) + if proposition == '!reset': + return self.reset() + if proposition == '!question': + return self.get_question() + if proposition == self._quizz['reponse']: + if personne in self._essais.keys(): + self._essais[personne] += 1 + else: + self._essais[personne] = 1 + if personne in self._points.keys(): + self._points[personne] += 1 + else: + self._points[personne] = 1 + self._status = 2 + return 'Bravo, {} tu as trouvé la réponse : {} en {} essais.'.format(personne, self._quizz['reponse'], self._essais[personne]) + + else: + if personne in self._essais.keys(): + self._essais[personne] += 1 + else: + self._essais[personne] = 1 + return '{} est une mauvaise réponse {}'.format(proposition, personne) + + def scoreboard(self, personne=None): + if personne is not None and personne in self._points.keys(): + return self._points['personne'] + return str(self._points) + + def indice(self): + return 'Choix possibles : ' + ", ".join(self._quizz['choix']) + + def reset(self): + self._status = 0 # 0 : not started, 1 : started, 2 : reponse trouvée + self._quizz = Quizz.quizz() + self._essais = {} + self._points = {} + self._round = 0 + if __name__ == "__main__": - print(quizz()) + q = Quizz() + print(q.get_question()) + q.start() + while q.get_status()[0] != 0: + while q.get_status()[0] == 1: + #personne = input('joueur>') + proposition = input('réponse>') + print(q.answer(proposition)) + print(q.get_status()) + q.new() + print(q.get_question()) -- GitLab