IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Projet ISN "QCM"


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut Projet ISN "QCM"
    Bonjour je suis actuellement en terminale S , et je suis en plein dans mon programme d'ISN, donc je vais vous le présenter.

    On a décidé avec mes collègues de faire un QCM comportant des questions qui se propose aléatoirement,

    Le soucis c'est que j'ai fait 3 liste ( question , choix , réponse ) lorsque je fais supprimer la question dans la liste pour ne pas que cette question repasse il se peut que dans mon programme un message d'erreur apparait quand le terme de la liste supprimer est re choisis...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    from math import*
     
    import random
     
     
     
    compteur=0
    nombre_de_question=0
     
    liste_questions=["Question 1 : Quelle est la capitale du Liban ? ","Question 2 : Quand l'armistice de la seconde Guerre Mondiale a-t-elle été signée ? ","Question 3 : Quelle est la capitale de l'Estonie ? "]
    liste_choix=[["1) Beyrouth","2) Damas","3) Rabat "],["1) 8 mai 1945","2) 11 novemble 1945","3) 18 juin 1940 "],["1) Riga","2) Tallin","3) Vilnius"]]
    liste_reponse=[1,1,2]
     
     
     
    debut=input("voulez-vous commencez ? oui ou non :\n")
    if debut == ('oui') :
    	print("commençons !\n ")
    	while nombre_de_question < 1 :
    		n=random.randint(0,2)
    		print (liste_questions[n])
    		print (liste_choix[n])
    		Q=int(input("quel numéros choississez-vous ?"))
    		if Q == liste_reponse[n] :
    			 compteur = compteur +1 
    		liste_questions.remove(liste_questions[n])
    		liste_choix.remove(liste_choix[n])
    		liste_reponse.remove(liste_reponse[n])
    	else :
    		print ("c'est finis")
     
     
     
    else :
    	print (" à une prochaine fois")


    Je vous remercie en avance !

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Ta boucle while est infinie, la valeur de "nombre_de_question" n'est pas incrémentée à chaque question.

    Il faut aussi diminuer la valeur maximale de randint() à chaque fois qu'une question est supprimée.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut Merci !
    Merci d'avoir répondu aussi vite j'en avais déduis cela aussi pour le randint seulement je ne connais pas l'astuce pour lui enlever le nombre [n] ..

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Tu peux conditionner le while directement sur la liste de questions et et faire le random sur sa longueur.
    Et tu peux simplifier en utilisant pop() à la place remove()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        # Tant que la liste contient quelque chose
    	while liste_questions:
    		n = random.randint(0, len(liste_questions)-1)
    		print (liste_questions[n])
    		print (liste_choix[n])
    		Q=int(input("quel numéros choississez-vous ?"))
    		if Q == liste_reponse[n] :
    			 compteur = compteur +1 
    		liste_questions.pop(n)
    		liste_choix.pop(n)
    		liste_reponse.pop(n)
    Il faudra, une fois que ceci tourne comme tu veux, prendre en charge les erreurs d'entrée utilisateur, en utilisant des fonctions de préférence.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut
    Merci beaucoup je comptais faire le pop mais je savais pas manipuler la fonction en tous cas je te remercie tout marcheeeee !

    Bonne journée et bonne continuation !

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 696
    Par défaut
    Salut,

    vos listes de questions, réponses,... sont des "constantes".
    En supprimant les entrées, vous fermez des possibilités côté "nouvelle partie".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        choices = range(len(liste_questions)-1)
         # while liste_questions:
         #		n = random.randint(0, len(liste_questions)-1)
         while choices:
                    n = random.choice(choices)
    		print (liste_questions[n])
    		print (liste_choix[n])
    		Q=int(input("quel numéros choississez-vous ?"))
    		if Q == liste_reponse[n] :
    			 compteur = compteur +1 
    		# liste_questions.pop(n)
    		# liste_choix.pop(n)
                    # liste_reponse.pop(n)
                    choices.remove(n)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut
    ça simplifie les choses en faites ?

  8. #8
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Ça veut dire que la liste de questions n'est pas vidée elle-même et donc tu peux relancer une nouvelle partie.

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 696
    Par défaut
    Citation Envoyé par jonathan.henriques Voir le message
    ça simplifie les choses en faites ?
    On s'économise d'avoir à faire les pop/remove dans les 3 listes.
    Mais on pense à la fonctionnalité suivante.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut
    Déjà je vous remercie encore maintenant j'ai un tout autre problème .. C'est avec tkinter tout d'abord j'ai modifié ma boucle pour en faire une fonction, et quand on appuie sur la touche début les questions se lance mais sur la partie noir et ce que je n'arrive pas à résoudre , c'est que lorsque j'ai cliqué sur oui , une nouvelle fenêtre s'ouvre , mais je ne sais pas comment insérer les questions avec les choix etc...


    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    from math import *
     
    import random
     
     
    #Liste + variable
     
    compteur=0
    nombre_de_question=0
     
    liste_questions=["Question  : Quelle est la capitale du Liban ?\n ","Question  : Quand l'armistice de la seconde Guerre Mondiale a-t-elle été signée ? ","Question  : Quelle est la capitale de l'Estonie /n? ","Question  : Quelle est la langue maternelle la plus parlée au monde ? \n","Question  : Quelle est la langue officielle au Nigeria \n?","Question  : Qui a réalisé le père noel est une ordure ? \n","Question  : Quel est l'état le plus grand des Etats-Unis ?","Question  : Qui a écrit l'Assommoir ? \n","Question  : La pénicilline a été découverte par : \n","Question  : Le premier président de la République était : \n","Question  : En quelle année ont été créées les régions ? \n","Question : Que collectionne un conchyophile ? \n","Question  : Quelle est la ville la plus peuplée du monde ? \n","Question  : Quelle formule mathématique permet d'établir les développements limités ? \n","Question  : Quel évènement a marqué l'année 1935 ? \n","Question : Quelle est la hauteur de la Tour Eiffel ? \n","Question  : Quel est l'organe le plus volumineux et le plus massif parmi ceux-ci ? \n","Question : En quelle année Neil Amstrong a-t-il posé le premier pas sur la lune ? \n","Question : Quel chanteur fait partie des Rolling Stones ? \n","Question : Quelle équipe de football a remporté la première coupe du monde en 1930 ? \n"]
    liste_choix=[["1) Beyrouth","2) Damas","3) Rabat "],["1) 8 mai 1945","2) 11 novemble 1945","3) 18 juin 1940 "],["1) Riga","2) Tallin","3) Vilnius"],["1) L'Anglais,2) L'espagnol,  3) le chinois madarin "],["1) L'anglais","2) Le nigerian","3) L'afrikaans "],["1) Coline Serreau","2) Gerard Oury","3) Jean Marie Poiré "],["1) Le Texas","2) L'Alaska","3) Le Montana "],["1) Stendhal","2) Flaubert","3) Zola "],["1) Ian Fleming","2) Alexander Flening","3) Marie Curie "],["1) R.Coty","2) A.Pinay","3) V.Auriol "],["1) 1806","2) 1956","3) 1901 "],["1) Des bières","2) des coquillages","3) Des animaux empaillés "],["1) Tokyo","2) Mexico","3) New York "],["1) Schrodinger","2) Crutz","3) Taylor "],["1) Les lois sociales du Front populaire","2) Lois de Nüremberg","3) Hitler chancelier "],["1) 250 mètres","2) 324 mètres","3) 295 mètres "],["1) Le foie","2) L'estomac","3) Le colon "],["1) 1967","2) 1969","3) 1971 "],["1) Jonh Lennon","2) Mick Jagger","3) Brian Johnson "],["1) Italie","2) Brésil","3) Uruguay "]]
    liste_reponse=[1,1,2,3,1,3,2,3,2,3,2,2,1,3,2,2,1,2,2,3]
     
    #début du programme 
     
    def quest():
    	newWindow= Tk()
    	newWindow.title('Question')
    	newWindow.geometry("400x300+600+400")
    	Mafenetre.destroy()
    	global compteur 
    	print("commençons !\n ")
     
    	while liste_questions :
     
    		n=random.randint(0,len (liste_questions)-1)
    		print (liste_questions[n])
    		print (liste_choix[n])
    		Q=int(input("quel numéros choississez-vous ?"))
    		if Q == liste_reponse[n] :
    			 compteur = compteur +1
     
     
    		liste_questions.pop(n)
    		liste_choix.pop(n)
    		liste_reponse.pop(n)
     
     
    	print ("c'est finis")
     
     
     
    #système de note + commentaire :		
     
    	print("Note:")	
    	if compteur == 20 :
    		showinfo('NOTE', "20/20...Que pouvons nous dire... si ce n'est BRAVO")		
     
    	elif 19>=compteur>=16 :
    		showinfo('NOTE', "19/20 C'est presque excellent... Courage ! Le succes est au bout du chemin.")
     
    	elif 15>=compteur>=12 :
    		showinfo('NOTE',"Tu as entre 12/20 et 15/20. Ne sois pas modeste, tu peux mieux faire !")
     
    	elif 11>=compteur>=10 :
    		showinfo('NOTE',"Tu as entre 10/20 et 11/20. Il faut tra-vai-ller !")
     
    	elif 9>=compteur>=6 :
    		showwarning('NOTE', "Tu as entre 9 et 6. Tu sais ce qu'il te reste à faire ..." )
     
    	elif 5>=compteur>=0 :
    		showwarning('NOTE',"Tu as en dessous de 5/20... Sans commentaire...")
     
     
     
     
    #~ else :
    	#~ print (" à une prochaine fois")	
     
     
    # Création de la fenêtre principale (main window)
    from tkinter import *
    from tkinter.messagebox import *
    Mafenetre = Tk()
     
    Mafenetre.title('QCM')
    Mafenetre.geometry('400x300+600+400')
     
    Label1 = Label(Mafenetre, text = 'Voici un petit QCM présenté par Jonathan, Thibault , Landry ')
    Label1.pack(side = TOP, padx = 5, pady = 5)
     
     
    Label2 = Label(Mafenetre, text = 'Voulez- vous commencez ? ')
    Label2.pack(side = LEFT, padx = 5, pady = 5)
     
    Bouton = Button(Mafenetre, text ='Oui', command = quest )
    Bouton.pack(side = LEFT, padx = 5, pady = 5)
     
    Bouton = Button(Mafenetre, text ="Non", command = Mafenetre.destroy )
    Bouton.pack(side = LEFT, padx = 5, pady = 5)
     
     
     
    Mafenetre.mainloop()

    Merci d'avance , car tkinter nous l'avons vu que pendant 2h en cours et encore c'était des fonctions toutes simple !

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo