Aide pour fonction aléatoire

Résolu
Clementine1998 Messages postés 43 Statut Membre -  
Clementine1998 Messages postés 43 Statut Membre -
Bonjour, j'ai crée un QCM où j'ai réussi à mettre les questions aléatoirement. Le problème c'est que les questions peuvent se répéter deux fois. Est-ce que quelqu'un peut m'aider?

from tkinter import *
import random

fen=Tk()

Consigne=Label(fen,text="Cocher la bonne reponse")
Consigne.pack()

#Questions Globales # la repetition correspond a la bonne reponse
ListeDeQuestionsReponses = [["Combien de couleurs sur le drapeau Francais?","3","2","4"],
["De quelle couleur est le rond sur le drapeau Chine","Rouge","Bleu","Vert"],
["Combien de doigts sur une main?","5","2","3"]]

x = len(ListeDeQuestionsReponses)

for i in range(x) :
QuestionAuHasard=random.choice(ListeDeQuestionsReponses)#On prend une question #Qu'on enleve de notre liste de questions
Qx=[QuestionAuHasard]
len(Qx)
Q0 = Qx[0][0]
R1 = Qx[0][1]
R2 = Qx[0][2]
R3 = Qx[0][3]
Question = Label(fen, text = Q0)
Question.pack()
Reponse1 = Label(fen, text = R1)
Reponse1.pack()
Reponse2 = Label(fen, text = R2)
Reponse2.pack()
Reponse3 = Label(fen, text = R3)
Reponse3.pack()

fen.mainloop()

2 réponses

  1. Clementine1998 Messages postés 43 Statut Membre
     
    J'ai finalement réussi. Voici mon code:

    from tkinter import *
    import random

    fen=Tk()

    Consigne=Label(fen,text="Cocher la bonne reponse")
    Consigne.pack()
    AllerAlaligne=Label(fen, text = "")
    AllerAlaligne.pack()

    Question = [["Combien de couleurs sur le drapeau Francais?","3","2","4"],
    ["De quelle couleur est le rond sur le drapeau Chine","Rouge","Bleu","Vert"],
    ["Combien de doigts sur une main?","5","2","3"]]

    x = len(Question)

    for i in range(x) :
    QuestionAuHasard=random.choice(Question)
    Qx=[QuestionAuHasard]
    len(Qx)
    Q0 = Qx[0][0]
    R1 = Qx[0][1]
    R2 = Qx[0][2]
    R3 = Qx[0][3]
    quest=Label(fen,text= Q0 )
    quest.pack()
    rep1=Label(fen, text= R1)
    rep2=Label(fen, text= R2)
    rep3=Label(fen, text= R3)
    rep1.pack()
    rep2.pack()
    rep3.pack()
    AllerAlaligne=Label(fen, text = "")
    AllerAlaligne.pack()
    PlaceNombre=Question.index(QuestionAuHasard)
    Place=int(PlaceNombre)
    del(Question[Place])

    fen.mainloop()


    J'aimerais maintenant que les questions s'affichent aléatoirement. Est-ce que quelqu'un peu m'aider?
    0
  2. jisisv Messages postés 3678 Statut Modérateur 936
     
    Utilise le module random et par exempple shuffle
    Python 2.7.11+ (default, Mar 30 2016, 21:00:42) 
    [GCC 5.3.1 20160323] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import random
    >>> anArray = range(1, 11)
    >>> random.shuffle(anArray)
    >>> anArray
    [1, 3, 7, 8, 9, 4, 10, 2, 6, 5]

    Voir random — Generate pseudo-random number

    0
    1. Clementine1998 Messages postés 43 Statut Membre
       
      Je comprend pas pourquoi les réponses ne s'affichent pas quand on lance le programme

      from tkinter import *
      import random

      fen=Tk()

      Consigne=Label(fen,text="Cocher la bonne reponse")
      Consigne.pack()

      AllerAlaligne=Label(fen, text = "") #juste pour la présentation
      AllerAlaligne.pack()


      ListeDeQuestionsReponses = [["Combien de couleurs sur le drapeau Francais?","3","2"],
      ["De quelle couleur est le rond sur le drapeau Chine","Rouge","Bleu"],
      ["Combien de doigts sur une main?","5","2"]]

      x = len(ListeDeQuestionsReponses)

      for i in range(x) :
      QuestionAuHasard=random.choice(ListeDeQuestionsReponses)
      Qx=[QuestionAuHasard]
      len(Qx)
      Q0 = Qx[0][0]
      R1 = Qx[0][1]
      R2 = Qx[0][2]
      Question=Label(fen,text = Q0 )
      Question.pack()

      ListeDeReponse=[R1,R2]
      y=len(ListeDeReponse)
      for j in range (y) :
      ReponseAuHasard=random.shuffle(ListeDeReponse)
      Reponse=Label(fen,text=ReponseAuHasard)
      Reponse.pack()


      AllerAlaligne=Label(fen, text = "")
      AllerAlaligne.pack()

      PlaceNombre=ListeDeQuestionsReponses.index(QuestionAuHasard)
      Place=int(PlaceNombre)
      del(ListeDeQuestionsReponses[Place])

      fen.mainloop()
      0
      1. Clementine1998 Messages postés 43 Statut Membre > Clementine1998 Messages postés 43 Statut Membre
         
        Je précise aussi que je compte mettre des Checkbutton devant les réponses et un bouton valider qui dira si la réponse est bonne ou non. C'est compatible avec la fonction random.shuffle?
        0