Création d'un quiz
Résolu
GIBERT
-
GIBERT -
GIBERT -
Bonjour, je suis actuellement en train de faire un quiz en python ce que j'ai réussi jusque ici. Cependant notre professeur nous a demandé de faire en sorte que les questions se posent aléatoirement et qu'une fois la question posée elle ne puisse pas être encore affichée.j'ai donc fait avec le module shuffle mais il n'y a qu'une seule question qui se pose la 10 a chaque fois puis le resultat s'affiche c'est cela que je ne comprends pas. Je vous met ce que j'ai codé ci-dessous et vous remercie de votre aide par avance(je ne mets que la partie avec le module shuffle qui ne fonctionne pas correctement. Vous pouvez me dire si vous avez besoin des autres parties de mon code):
score = 0
quizz = importe("quizz.csv")
nquest = len(quizz)
for i in range(nquest) :
# affichage d'une question et saisie de la réponse
from random import *
number = randint(0,10)
x = [[i] for i in range(number)]
shuffle(x)
question = quizz[i]
affiche(question)
reponse = input('\nVotre choix :')
score = 0
quizz = importe("quizz.csv")
nquest = len(quizz)
for i in range(nquest) :
# affichage d'une question et saisie de la réponse
from random import *
number = randint(0,10)
x = [[i] for i in range(number)]
shuffle(x)
question = quizz[i]
affiche(question)
reponse = input('\nVotre choix :')
Configuration: Windows / Chrome 79.0.3945.130
A voir également:
- Création d'un quiz
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Logo quiz - Télécharger - Jeux vidéo
from random import *
def importe(nomfichier) :
import csv
liste = []
with open(nomfichier) as fichier :
lecteur = csv.reader(fichier)
nl = 0
for ligne in lecteur :
if nl == 0 :
entete = (ligne)
else :
# bd.append({ entete[0]:ligne[0],entete[1]:ligne[1],entete[2]:ligne[2],entete[3]:(ligne[3]),entete[4]:ligne[4],entete[5]:ligne[5],entete[6]:ligne[6] })
record = {}
for i in range(len(ligne)) : record[entete[i]] = ligne[i]
liste.append(record)
nl += 1
return liste
# pour test, affichage du contenu de la bd
def affiche_base(bd) :
print('Contenu de la base de données \n')
for question in bd :
for cle, valeur in question.items(): print(cle," : ", valeur)
print()
# affichage d'une question
def affiche(question) :
print('Question n°',question['id'])
print('Thème : ',question['theme'])
print(question['question'])
print('1 : ',question['prop1'])
print('2 : ',question['prop2'])
print('3 : ',question['prop3'], end="")
# QUIZZ : programme principal
score = 0
x = 0
quizz = importe("quizz.csv")
nquest = len(quizz)
for i in range(nquest) :
shuffle(quizz)
question = quizz[i]
affiche(question)
reponse = input('\nVotre choix :')
# verification de la réponse
if reponse == question['reponse'] :
print(':) EXACT !')
score += 1
x += 1
else :
print(":( ERREUR, la bonne réponse était la n°", question['reponse'])
print(question['comment'],'\n')
x += 1
x = 10
print("Votre score est de : ", score," / ", nquest, " - A bientôt ...")
Tu te compliques bien la vie, tu as juste à appliquer shuffle sur cette liste une seule et unique fois et c'est tout, là tu mélanges à chaque tour de boucle, donc forcément, peu de chance de ne pas obtenir de mêmes questions.
PS: Lorsque tu postes du code, utilise la balise code du forum afin d'obtenir un joli code tout bien coloré et indenté ;)