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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    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 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    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 776
    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 776
    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 ?

+ 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