Questionnaire choix de réponse (qcm) Python 2.7.9

Fermé
Etidal23 Messages postés 4 Date d'inscription mardi 18 octobre 2016 Statut Membre Dernière intervention 12 novembre 2016 - Modifié par crapoulou le 18/10/2016 à 11:20
Etidal23 Messages postés 4 Date d'inscription mardi 18 octobre 2016 Statut Membre Dernière intervention 12 novembre 2016 - 19 oct. 2016 à 00:10
Bonjour,

Je suis débutant à python et j’éprouve de la difficulté à faire le programme qui fait la chose suivante:
Créer un programme qui propose un questionnaire (QCM) version beta :
• L’utilisateur devra donner son nom
• Un questionnaire de 5 questions sur les sciences:
Une en Mathématiques, une en Biologie, une en Physique, une Chimie et une en Informatique.
• Vous devrez proposer 3 choix de réponses pour chaque question
• A la fin du questionnaire, donnez le score de l’utilisateur !

Voici ce que j'ai fait comme boulot, mais plusieurs problèmes (pas de résultat final, pas de retour d'information...) sont présents comme vous le remarquerez. Merci pour votre aide.

# 
print(u"Bonjour! Pour valider les cinq sciences, voici 5 questions; l'une en mathématique, en biologie, en physique, en chimie et en informatique\n")
N=raw_input(u"Bonjour! Veuillez écrire votre nom:")
print u"Prêt", N, "? Alors commencons !"
q1=input(u"\n1.Que donne l'équation suivante: 9/3*9?\n\n1-3\n2-6\n3-9\n\nVotre réponse:")
while q1==[1,2,3]:
    if q1==3:
        q1=0
        note+=1
        print u"Bonne réponse!"
    elif q1==[1,2]:
        q1=0
        print u"Mauvaise réponse!"
    else :
        print u"Vérifier votre donnée."
        q1=input(u"\n1.Que donne l'équation suivante: 9/3*9?\n\n1-3\n2-6\n3-9\n\nVotre réponse:")
q2=raw_input(u"\n2.L'une de ces quatre propositions ne désigne pas un organe, laquelle ?\n\n1-L'épiderme\n2-Le coeur\n3-La rate\n\nVotre réponse:")
while q1==[1,2,3]:
    if q1==1:
        q1=0
        note+=1
        print u"Bonne réponse!"
    elif q1==[3,2]:
        q1=0
        print u"Mauvaise réponse!"
    else :
        print u"Vérifier votre donnée."
        q2=raw_input(u"\n2.L'une de ces quatre propositions ne désigne pas un organe, laquelle ?\n\n1-L'épiderme\n2-Le coeur\n3-La rate\n\nVotre réponse:")
q3=raw_input(u"\n3.Quelle est la vitesse de la lumière ?\n\n1-299 792 458 km⋅s-1\n2-299 792 458 m⋅s-1\n3- 299 792 458 000 m⋅s-1\n\nVotre réponse:")
while q1==[1,2,3]:
    if q1==3:
        q1=0
        note+=1
        print u"Bonne réponse!"
    elif q1==[1,2]:
        q1=0
        print u"Mauvaise réponse!"
    else :
        print u"Vérifier votre donnée."
        q3=raw_input(u"\n3.Quelle est la vitesse de la lumière ?\n\n1-299 792 458 km⋅s-1\n2-299 792 458 m⋅s-1\n3- 299 792 458 000 m⋅s-1\n\nVotre réponse:")
q4=raw_input(u"\n4.Quelle est le nom de l'ion positif ?\n\n1-Neutron\n2-Proton\n3-Électron\n\nVotre réponse:")
while q1==[1,2,3]:
    if q1==3:
        q1=0
        note+=1
        print u"Bonne réponse!"
    elif q1==[1,2]:
        q1=0
        print u"Mauvaise réponse!"
    else :
        print u"Vérifier votre donnée."
        q4=raw_input(u"\n4.Quelle est le nom de l'ion positif ?\n\n1-Neutron\n2-Proton\n3-Électron\n\nVotre réponse:")
q5=raw_input(u"\n5.Si nous tapons sur python 14%2, quel résultat va nous donner python ?\n\n1-2\n2-7\n3-0\n\nVotre réponse:")
while q1==[1,2,3]:
    if q1==3:
        q1=0
        note+=1
        print u"Bonne réponse!"
    elif q1==[1,2]:
        q1=0
        print u"Mauvaise réponse!"
    else :
        print u"Vérifier votre donnée."
        q5=raw_input(u"\n5.Si nous tapons sur python 14%2, quel résultat va nous donner python ?\n\n1-2\n2-7\n3-0\n\nVotre réponse:")
print N,u",votre résultat est de ",note,"/5"





1 réponse

Il faut factoriser un peu tout ça, tu répètes 5 fois la même chose dans ton code.

Ton code n'est pas très cohérent :
while q1==[1,2,3]
elif q1==[1,2]

Cela ne peut fonctionner.

Un exemple rapide, et surtout plus concis et lisible de ce que cela peut donner.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import print_function

qcm = [
        {'question':"Que donne l'équation suivante: 9/3*9",
         'choix':(3, 6, 9),
         'reponse':0},
        {'question':"L'une de ces quatre propositions ne désigne pas un organe, laquelle",
          'choix':("L'épiderme", "Le coeur", "La rate"),
          'reponse':0},
        {'question':"Quelle est la vitesse de la lumière",
          'choix':("299 792 458 km⋅s", "299 792 458 m⋅s", "299 792 458 000 m⋅s"),
          'reponse':2},
        {'question':"Quelle est le nom de l'ion positif",
          'choix':("Neutron", "Proton", "Électron"),
          'reponse':2},
        {'question':"Si nous tapons sur python 14%2, quel résultat va nous donner python",
          'choix':("2", "7", "0"),
          'reponse':2},
      ]


print("Bonjour! Pour valider les cinq sciences, voici 5 questions; l'une en mathématique, en biologie, en physique, en chimie et en informatique\n")
nom = raw_input("Bonjour! Veuillez écrire votre nom : ")
print("Prêt", nom, "? Alors commencons !\n")

score = 0

for item in qcm :
    print(item['question'], '?')
    i = 1
    for choix in item['choix'] :
        print(i, '-', choix)
        i += 1
    reponse = raw_input("Votre réponse : ")
    if int(reponse) == item['reponse'] + 1 :
        print("Bravo, c'était bien la bonne réponse")
        score += 1
    else:
        print("La bonne réponse était la numéro", item['reponse'] + 1)
    print("\n")

print("Votre résultat est de", score, "/", len(qcm))
print("Au revoir", nom)


L'avantage est déjà que tu peux ajouter des question simplement en ajoutant des items dans la liste qcm.
La liste contient des dictionnaires, avec pour items, la question, la liste des choix de réponses (tuple), et la bonne réponse correspondant à l'index de la liste des réponses.
1
Etidal23 Messages postés 4 Date d'inscription mardi 18 octobre 2016 Statut Membre Dernière intervention 12 novembre 2016
19 oct. 2016 à 00:10
Merci beaucoup jopkim tu m'as vraiment beaucoup aidé! =)
0