Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Quizz , Questions/réponse aléatoire

Sujet résolu
25 mai 2015 à 19:14:17

Bonjour/Bonsoir,

Je suis eleve en terminale et j'ai dois créer un programme sous python pour la fin de l'année .

EN groupe nous avons décidé de faire un quizz ( Jeu de questions/réponses) sous python, je m'occupe de la partie création des questions et réponse . La partie dur tkinter est gérer par quelqu'un d'autre.

Donc j'ai fais plusieurs recherches j'ai réussi a avoir un test de quizz seulement deux questions qui fonctionne:

from random import*

# Questionnement géographie          
geo = [ " Capitale de la France ? " ]
geo1 = [" Superficie de la Russie ? " ]

rpA = [" 1 : Marseille " ]
rpA1 =[" 1 : 315612 de Km²" ]

rpB = [" 2 : Paris " ]
rpB1 = [" 2 : 15 Km² " ]

rpC = [" 3 : Nantes " ]
rpC1 = [" 3  : 17 098 242 Km² " ]



#question1

print(geo)  
print(rpA)  
print(rpB)  
print(rpC)  

rep= int(input ("Entrée LA bonne réponse :  " ))
rpcorrecte = 2
    
if rep != rpcorrecte:
    print("FAUX")
else :
    print("Bien")

#question2
    
print(geo1)  
print(rpA1)  
print(rpB1)  
print(rpC1)  

    
reputilisateur = int(input ("Entrée LA bonne réponse :  " ))
rpcorrecte = 3

    
if reputilisateur != rpcorrecte:
    print("FAUX")
else :
    print("Bien")





Voila , ensuite je dois faire apparaitre les questions dans un ordre aléatoire . J'ai donc pensé faire un shuffle j'arrive à ça :

from random import*

# Questionnement géographie          
geo = [ " Capitale de la France ? ", " Superficie de la Russie ? " ]


rpA = [" 1 : Marseille " ]
rpA1 =[" 1 : 315612 de Km²" ]

rpB = [" 2 : Paris " ]
rpB1 = [" 2 : 15 Km² " ]

rpC = [" 3 : Nantes " ]
rpC1 = [" 3  : 17 098 242 Km² " ]



#question1

shuffle(geo)
print(geo[0])
if geo[0] == 'Capitale de la France':
    print(rpA, rpB, rpC)

    int(input ("Entrée LA bonne réponse :  " ))
rpcorrecte = 2
    
if rpcorrecte!= 2:
    print("FAUX")
else :
    print("Bien")

if geo[0] ==  "Superficie de la Russie ? ":
    print(rpA1, rpB1, rpC1)

    int(input ("Entrée LA bonne réponse :  " ))
rpcorrecte = 3
    
if rpcorrecte!= 3:
    print("FAUX")
else :
    print("Bien")



Donc les questions apparaissent bien dans un ordre aléatoire mais je n'arrive pas a leurs associer leurs réponses . Je me doute que c'est mon test

if geo[0] == 'Capitale de la France':

 qui ne convient pas mais je n'ai pas trouvé de solution pour le changer ...

Enfaite la question apparait et après le programme ne fais pas ce que je voudrais :

 Superficie de la Russie ?
Bien
Bien

J'aimerai avoir votre aide pour pouvoir un ordre d'apparition des questions dans le désordre suivi de leurs réponses .

Merci .



-
Edité par Jr.Soraka 25 mai 2015 à 19:25:24

  • Partager sur Facebook
  • Partager sur Twitter
26 mai 2015 à 8:34:51

import random
#Questions Globales
gQz = [["Quelle est la superficie de la Russie","Reponse1","Reponse2","Reponse3","Reponse2"],["Question2","R1","R2","R3","La bonne parmi R1,R2,R3"]]
#Questions Locales
lQz = gQz #On va pouvoir virer des éléments de la liste pour ne pas répéter la question.

for i in range(0,2): #On ne va poser que 2 questions
 lQst = random.choice(lQz)  #On prend une question
 lQz.remove(lQst)  #Qu'on enleve de notre liste de questions
 print("Question "+i+": "+lQst[0]) #On affiche la question
 print("A: "+lQst[1]) #Et ses 3 réponses
 print("B: "+lQst[2])
 print("C: "+lQst[3])
 
 lRep = ""
 while lRep not in ["A","B","C"]: #Tant que la réponse n'est pas convenable
  lRep = str(input("Votre réponse: ")) #On redemande
 
 if lRep == "A": #On récupère le choix
  lChx = lQst[1]
 if lRep == "B":
  lChx = lQst[2]
 if lRep == "C":
  lChx = lQst[3]

 if lChx = lQst[4]: #Si le choix est bon
  print("-- VRAI --\n")
 else: #Sinon
  print("-- FAUX --\n")
 

-
Edité par IQbrod 26 mai 2015 à 8:37:05

  • Partager sur Facebook
  • Partager sur Twitter
OpenClassrooms retire tellement d'aiguilles de nos pieds qu'on pourrait ne plus trouver le foin de notre botte :)
26 mai 2015 à 21:08:40

Merci pour ta réponse , je regarde cela mercredi après midi et repasse pour vous présentez le projet final ou poser d'autres questions :).
  • Partager sur Facebook
  • Partager sur Twitter
28 mai 2015 à 16:22:01

Gr

Grâce a la réponse  de IQbrod j'ai pu progresser et arriver a ce programme :

import random
#Questions Globales
Question = [["Quelle est la superficie de la Russie","Reponse1","Reponse2","Reponse3",],["Question2","R1","R2","R3"],["Question3","R1","R2","R3"],["Question4","R1","R2","R3"],["Question5","R1","R2","R3"]
       ,["Question6","R1","R2","R3"],["Question7","R1","R2","R3"],["Question8","R1","R2","R3"],["Question9","R1","R2","R3"],["Question10","R1","R2","R3"]]

qtal = Question #Question alléatoires


x = 0
while x < 10 : 
    for i in range(0,1): #On 10 questions
     lQst = random.choice(qtal)  #On prend une question
     qtal.remove(lQst)  #Qu'on enleve de notre liste de questions 
     print(lQst[0])
 
     print(lQst)  #On affiche la question
     print(lQst[1]) #Et ses 3 réponses
     print(lQst[2])
     print(lQst[3])
  
     lRep = ""
     while lRep != "C": #Tant que la réponse n'est pas convenable
      lRep = str(input("Votre réponse: ")) #On redemande
  
     if lRep == "A": #On récupère le choix
      lChx = lQst[1]
     if lRep == "B":
      lChx = lQst[2]
     if lRep == "C":
      lChx = lQst[3]
 
     if lChx == lQst[3]: #réponse C 
      print("-- VRAI --\n")
     else: #Sinon
      print("-- FAUX --\n")


Liste du probleme encore présents :

  - la bonne réponse est toujours la meme a savoir C : Enaite le but est que la bonne réponser soit differentes pour les question ( recherches en cours ) .

 lRep = ""
     while lRep != "C": #Tant que la réponse n'est pas convenable
      lRep = str(input("Votre réponse: ")) #On redemande

 C'est cette partie là qui pose probleme , je tente d'y remédier en trouvant autre chose



Si vous avez des idées je suis preneur :).

-
Edité par Jr.Soraka 28 mai 2015 à 16:31:36

  • Partager sur Facebook
  • Partager sur Twitter
28 mai 2015 à 17:14:05

Non non c'est bon, le dernier élément dois juste etre ta bonne réponse. Si tu regardes bien j'ai un tableau de 5 pas de 4 a la fin de tes trois propositions rajoute un parmi les 3 contenant la bonne réponse.

Puis tu compares ton choix à cet élément.

Ensuite ce n'est pas while Rep != "C" mais different de A B ou C, on demande de saisir soit A soit B soit C.

Relis bien mon code il était tout à fait fonctionnel, tu as juste oublié d'ajouter l'élément final pour tes listes.

Si C est la bonne réponse on a : ["Question","A","B","C","C"]
Si A est la bonne réponse on a : ["Question","A","B","C","A"]

Reprends mon code d'avant et corrige :)

  • Partager sur Facebook
  • Partager sur Twitter
OpenClassrooms retire tellement d'aiguilles de nos pieds qu'on pourrait ne plus trouver le foin de notre botte :)
28 mai 2015 à 18:48:18

import random
#Questions Globales  # la répétition correspond a la bonne réponse 
Question = [["Quelle est la superficie de la Russie","Reponse1","Reponse2","Reponse3","Reponse2"],["Question2","R1","R2","R3","R1"],["Question3","R1","R2","R3","R3"],["Question4","R1","R2","R3","R2"],["Question5","R1","R2","R3","R1"]
       ,["Question6","R1","R2","R3","R2"],["Question7","R1","R2","R3","R3"],["Question8","R1","R2","R3","R2"],["Question9","R1","R2","R3","R1"],["Question10","R1","R2","R3","R2"]]

qtal = Question #On enleve des éléments de la liste pour ne pas répéter la question.


x = 0
while x < 10 : 
    for i in range(0,1): #On ne va poser que 2 questions
     lQst = random.choice(qtal)  #On prend une question
     qtal.remove(lQst)  #Qu'on enleve de notre liste de questions
     print(lQst[0])
 
     print(lQst)  #On affiche la question
     print(lQst[1]) #Et ses 3 réponses
     print(lQst[2])
     print(lQst[3])
  
     lRep = ""
     lRep != ["A","B","C"]

     lRep = str(input("Votre réponse: ")) #On redemande
  
     if lRep == "A": #On récupère le choix
      lChx = lQst[1]
     if lRep == "B":
      lChx = lQst[2]
     if lRep == "C":
      lChx = lQst[3]
 
     if lChx == lQst[4]: #rpvrai
      print("-- VRAI --\n")
     else: #Sinon
      print("-- FAUX --\n")


Et voilà , merci a toi et désolé , je n'avais pas compris le fonctionnement de ton tableau . Donc c'est bon le programme fonctionne correctement . Encore merci .
  • Partager sur Facebook
  • Partager sur Twitter
28 mai 2015 à 21:21:27

Hop! étant débutant en python je viens rajouter ma pierre! :D

EDIT : La ligne 21 et 22 ne sert à rien, rajoute les minuscules pour la casse sa éviteras d'être en Maj....

-
Edité par MrOignon 28 mai 2015 à 21:27:20

  • Partager sur Facebook
  • Partager sur Twitter
Piquant comme un oignon! :D
29 mai 2015 à 8:24:28

Ta ligne 22 ne sert à rien du tout à vrai dire :)

Le but est de tester que l'utilisateur ne saisisse pas Z ou quelque chose dans ce genre.
On va donc lui demander de répondre une réponse valide tant qu'il n'aura pas saisi A,B,C (et a,b,c si tu veux respecter la casse).

On va donc écrire :

lRep = ""
while lRep != ["A","B","C"]:
  lRep = str(input("Réponse: ")).upper()
  #On passe en majuscule pour respecter la casse

-
Edité par IQbrod 29 mai 2015 à 8:24:49

  • Partager sur Facebook
  • Partager sur Twitter
OpenClassrooms retire tellement d'aiguilles de nos pieds qu'on pourrait ne plus trouver le foin de notre botte :)
30 mai 2015 à 16:48:44

Merci pour ce complement ^^ . Si vous voulez jouer
import random
#Questions Globales  # la répétition correspond a la bonne réponse

print(" Taper la bonne réponse A,B ou C ( ne pas oublier les majuscules , c'est une série de 10 questions . Si vous répondez autre chose que A B C le programme plantera il faudra le relancer . " )


Question = [["Quelle est la capitale de la France ?","A :Nantes","B :Paris","C :Marseilles","B :Paris"],
            ["Quel est le plus grand océan du monde ? ","A :Le Pacifique","B :L'Atlantique","C :La mer Noire","A :Le Pacifique"],
            ["Avec quel pays la France n'a t-elle aucune frontière ?","A :Autriche","B :Belgique","C :Monaco","A :Autriche"],
            ["Dans quelle ville ce trouve le pont Vasco de Gamma ?","A :Madrid","B :Barcelone","C :Lisbonne","C :Lisbonne"],
            ["Quelle est la capitale des Phillipines ?","A :Manille","B :Jakarta","C :Wellington","A :Manille"] ,
            ["Quel département français a pour code géographique le 16 ? ","A :Le Cantal","B :La Charente","C :L'Aude","B :La Charente"],
            ["Dans quel pays se trouve Phnom Penh ?","A :Chine","B :Corée du Nord","C :Cambodge","C :Cambodge"],
            ["Les habitants de Jérusalem se nomment les ?","A :Yérousalémiens","B :Hiérosolymitains","C :Jérusalemistes","B :Hiérosolymitains"],
            [" La France compte environ ","A :37 256 communes ?","B :25 894 communes ? ","C :36 681 communes ?","C :36 681 communes ?"],
            ["La superficie du Bandgladesh est de ? ","A :150 254 Km²","B :147 570 km²","C :80 456 km²","B :147 570 km²"]]
             

qtal = Question #On enleve des éléments de la liste pour ne pas répéter la question.


x = 0
while x < 10 :
    for i in range(0,1): 
     lQst = random.choice(qtal)  #On prend une question
     qtal.remove(lQst)  #Qu'on enleve de notre liste de questions
     print(lQst[0])  #On l'affiche
 
     
     print(lQst[1]) #Les 3 réponses
     print(lQst[2])
     print(lQst[3])
  
     lRep = ""
     lRep != ["A","B","C"]

     lRep = str(input("Votre réponse: ")) #On redemande
  
     if lRep == "A": #On récupère le choix
      lChx = lQst[1]
      
     if lRep == "B":
      lChx = lQst[2]
     if lRep == "C":
      lChx = lQst[3]
 
     if lChx == lQst[4]: #rpvrai
      print("-- VRAI --\n")
      print("Nouvelle question : " )
      x += 1
      
     else: #Sinon
      print("-- FAUX --\n")
      print(" La bonne réponse était : "), print(lQst[4])

      print("Nouvelle question : " )
      x += 1

x = 10
print(" Fin du jeu ! " )
      

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2019 à 11:18:17

Bonjour je me suis amusée à reprendre ce programme en changeant les questions réponses, car mon but est de faire un programme pour apprendre les notes de musique. Pour cela, il faut que j'intègre à mon programme une capsule son ( j'ai télécharger pygame) j'ai donc d'un coté mon quizz et de l'autre mon interface pygame mais j'aimerais combiner les deux afin qu'ils fonctionnent ensemble

comment les lié ?

  • Partager sur Facebook
  • Partager sur Twitter