Informatique

Question

Bonsoir,
J'aimerais réaliser un QCM avec un programme python pour se faire j'ai repris celui d'un de mes camarades mais il y a une erreur en effet, je n'arrive pas à rentrer ma réponse sans que le programme fonctionne ..
Est-il possible que vous m'aidiez ?
Voici le programme :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"]

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 ! " )


et l'erreur que m'indique l'ordinateur :
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 .
La France compte environ
A :37 256 communes ?
B :25 894 communes ?
C :36 681 communes ?
Votre réponse: A

Traceback (most recent call last):
File "C:/Python27/QCM FAUX2.py", line 37, in
lRep = str(input("Votre réponse: ")) #On redemande
File "", line 1, in
NameError: name 'A' is not defined


Par avance, merci

1 Réponse

  • Réponse :

    Bonjour,

    Explications :

    import random

    def AskRep(wQuest):

       print (wQuest[0])

       print(wQuest[1]) #Les 3 réponses

       print(wQuest[2])

       print(wQuest[3])

       aRep = ""

       while not(aRep in ["A","B","C"]):    

           aRep = str(input("Votre réponse: A B C ")).upper()

       return aRep

    #------------------------------------------------------------

    Question = [["Quelle est la capitale de la France ?",

                "A :Nantes",

                "B :Paris",

                "C :Marseilles",

                "B"],

               ["Quel est le plus grand océan du monde ? ",

                "A :Le Pacifique",

                "B :L'Atlantique",

                "C :La mer Noire",

                "A"],

               ["Avec quel pays la France n'a t-elle aucune frontière ?",

                "A :Autriche",

                "B :Belgique",

                "C :Monaco",

                "A"],

               ["Dans quelle ville ce trouve le pont Vasco de Gamma ?",

                "A :Madrid",

                "B :Barcelone",

                "C :Lisbonne",

                "C"],

               ["Quelle est la capitale des Phillipines ?",

                "A :Manille",

                "B :Jakarta",

                "C :Wellington",

                "A"] ,

               ["Quel département français a pour code géographique le 16 ? ",

                "A :Le Cantal",

                "B :La Charente",

                "C :L'Aude",

                "B"],

               ["Dans quel pays se trouve Phnom Penh ?",

                "A :Chine",

                "B :Corée du Nord",

                "C :Cambodge",

                "C"],

               ["Les habitants de Jérusalem se nomment les ?",

                "A :Yérousalémiens",

                "B :Hiérosolymitains",

                "C :Jérusalemistes",

                "B"],

               [" La France compte environ ",

                "A :37 256 communes ?",

                "B :25 894 communes ? ",

                "C :36 681 communes ?",

                "C"],

               ["La superficie du Bandgladesh est de ? ",

                "A :150 254 Km²",

                "B :147 570 km²",

                "C :80 456 km²",

                "B"]]

    score=0

    qtal = Question

    nb=len(qtal)

    #------------------------------------------------------------

    print (" Ce QCM est une série de ",nb," questions " )

    x = 0

    while x < nb:

           lQst = random.choice(qtal) #On prend une question

           lRep=AskRep(lQst)

           if lRep == lQst[4]:

               score+=1

               print(lQst[0]) #On l'affiche

               qtal.remove(lQst) #Qu'on enleve de notre liste de questions

               print("-- VRAI --\n")

           else:

               print(" réponse fausse")

               

           x=x+1

    print(" Fin du jeu ! \n","score=",score,"/",nb )

    #------------------------------------------------------------

Autres questions