CREATION D'UN QCM

Cette formation aborde les bases de la programmation informatique.

Modérateur : Équipe sillages.info

Marie Feuillassier
Messages : 2
Enregistré le : sam. 5 mai 2018 18:36

CREATION D'UN QCM

Messagepar Marie Feuillassier » mar. 8 mai 2018 12:51

Bonjour,
J'ai réalisé un programme pour le QCM mais je ne sais pas s'il convient.
Le voici:

def menu():
print("quel questionnaire désirez-vous? ");
print("1 Histoire");
print("2 Sciences");
global x
x=raw_input("Quel est votre choix: ")
x=int(x)
return(x)
def histoire1():
global total1
fichier=open("questions d'histoire","w")
fichier.write(" En quelle année a été exécuté Louis XVI ?: ")
fichier.close()
fichier=open("questions d'histoire","r")
quest=fichier.readline()
print(quest);
date1=[1793,1789,1790]
print("0: {}".format(date1[0]));
print("1: {}".format(date1[1]));
print("2: {}".format(date1[2]))
y=raw_input("Quelle est votre réponse? ")
if int(y)==0:
total1=int(1)
print("bravo c'est une bonne réponse")
else:
total1=int(0)
print("c'est une mauvaise réponse, il fallait répondre 1793 ")
return total1
def histoire2():
global total2
fichier=open("questions d'histoire","w")
fichier.write("À quelle date est décédé Leonard de Vinci ?:\n")
fichier.close()
fichier=open("questions d'histoire","r")
quest=fichier.readline()
print(quest);
date2=[1519,1620,1450]
print("0: {}".format(date2[0]));
print("1: {}".format(date2[1]));
print("2: {}".format(date2[2]))
z=raw_input("Quelle est votre réponse? ")
if int(z)==0:
total2=int(1)
print("bravo c'est une bonne réponse")
else:
total2=int(0)
print("c'est une mauvaise réponse, il fallait répondre: 1519")
return total2
def histoire3():
global total3
fichier=open("questions d'histoire","w")
fichier.write("À quelle date a débuté la renaissance ?: ")
fichier.close()
fichier=open("questions d'histoire","r")
quest=fichier.readline()
print(quest);
date3=[1270,1300,1600]
print("0: {}".format(date3[0]));
print("1: {}".format(date3[1]));
print("2: {}".format(date3[2]))
k=raw_input("Quelle est votre réponse? ")
if int(k)==1:
total3=int(1)
print("bravo c'est une bonne réponse")
else:
total3=int(0)
print("c'est une mauvaise réponse, il fallait répondre 1300")
return total3
def histoire4():
global total4
fichier=open("questions d'histoire","w")
fichier.write("Sous quel règne se déroula l'histoire du vase de Soissons?: ")
fichier.close()
fichier=open("questions d'histoire","r")
quest=fichier.readline()
print(quest);
date4=["Vercingétorix","Louis XV","Clovis"]
print("0: {}".format(date4[0]));
print("1: {}".format(date4[1]));
print("2: {}".format(date4[2]))
c=raw_input("Quelle est votre réponse? ")
if int(c)==2:
total4=int(1)
print("bravo c'est une bonne réponse")
else:
total4=int(0)
print("c'est une mauvaise réponse, il fallait répondre Clovis")
return total4
def histoire5():
global total5
fichier=open("questions d'histoire","w")
fichier.write("Qui était Berthe aux grands pieds ?: ")
fichier.close()
fichier=open("questions d'histoire","r")
quest=fichier.readline()
print(quest);
date5=["La soeur de Jeanne d'Arc","La femme de Louis IX","La mère de Charlemagne"]
print("0: {}".format(date5[0]));
print("1: {}".format(date5[1]));
print("2: {}".format(date5[2]))
d=raw_input("Quelle est votre réponse? ")
if int(d)==2:
total5=int(1)
print("bravo c'est une bonne réponse")
else:
total5=int(0)
print("c'est une mauvaise réponse, il fallait répondre La mère de Charlemagne")
return total5
def sciences1():
global tot1
fichier=open("questions sciences","w")
fichier.write("Qu'est ce qu'une mitose ?: ")
fichier.close()
fichier=open("questions sciences","r")
question=fichier.readline()
print(question);
rep1=["Un champignon","Une division cellulaire","Une tendance pathologique à la fabulation"]
print("0: {}".format(rep1[0]));
print("1: {}".format(rep1[1]));
print("2: {}".format(rep1[2]))
e=raw_input("Quelle est votre réponse? ")
if int(e)==1:
tot1=int(1)
print("bravo c'est une bonne réponse")
else:
tot1=int(0)
print("c'est une mauvaise réponse, il fallait répondre Une division cellulaire")
return tot1
def sciences2():
global tot2
fichier=open("questions sciences","w")
fichier.write("Quelle est l'unité de la puissance electrique ?: ")
fichier.close()
fichier=open("questions sciences","r")
question=fichier.readline()
print(question);
rep2=["Le Watt","L'Ampère","Le Volt"]
print("0: {}".format(rep2[0]));
print("1: {}".format(rep2[1]));
print("2: {}".format(rep2[2]))
f=raw_input("Quelle est votre réponse? ")
if int(f)==0:
tot2=int(1)
print("bravo c'est une bonne réponse")
else:
tot2=int(0)
print("c'est une mauvaise réponse, il fallait répondre Le Watt")
return tot2
def sciences3():
global tot3
fichier=open("questions sciences","w")
fichier.write("Quelle est la solution de l'équation 3=x+2 ?: ")
fichier.close()
fichier=open("questions sciences","r")
question=fichier.readline()
print(question);
rep3=["2/3","1","L'équation n'a pas de solution"]
print("0: {}".format(rep3[0]));
print("1: {}".format(rep3[1]));
print("2: {}".format(rep3[2]))
g=raw_input("Quelle est votre réponse? ")
if int(g)==1:
tot3=int(1)
print("bravo c'est une bonne réponse")
else:
tot3=int(0)
print("c'est une mauvaise réponse, il fallait répondre 1")
return tot3
def sciences4():
global tot4
fichier=open("questions sciences","w")
fichier.write("z=3+2i est ?: ")
fichier.close()
fichier=open("questions sciences","r")
question=fichier.readline()
print(question);
rep4=["Un nombre compliqué","Un entier relatif","Un nombre complexe"]
print("0: {}".format(rep4[0]));
print("1: {}".format(rep4[1]));
print("2: {}".format(rep4[2]))
h=raw_input("Quelle est votre réponse? ")
if int(h)==2:
tot4=int(1)
print("bravo c'est une bonne réponse")
else:
tot4=int(0)
print("c'est une mauvaise réponse, il fallait répondre Un nombre complexe")
return tot4
def sciences5():
global tot5
fichier=open("questions sciences","w")
fichier.write("Quel est le symbole chimique de l'eau ?: ")
fichier.close()
fichier=open("questions sciences","r")
question=fichier.readline()
print(question);
rep5=["H2O","02","CO2"]
print("0: {}".format(rep5[0]));
print("1: {}".format(rep5[1]));
print("2: {}".format(rep5[2]))
i=raw_input("Quelle est votre réponse? ")
if int(i)==0:
tot5=int(1)
print("bravo c'est une bonne réponse")
else:
tot5=int(0)
print("c'est une mauvaise réponse, il fallait répondre H2O")
return tot5
def exercice():
if x==1:
histoire1()
histoire2()
histoire3()
histoire4()
histoire5()
total=total1+total2+total3+total4+total5
print("vous avez obtenu la note de: {}/5 ".format(total))
menu()
exercice()
elif x==2:
sciences1()
sciences2()
sciences3()
sciences4()
sciences5()
tot=tot1+tot2+tot3+tot4+tot5
print("Vous avez obtenu la note de: {}/5".format(tot))
menu()
exercice()
else:
encore=raw_input("vous devez choisir 1 ou 2, recommencez:")
exercice()

menu()
exercice()

David ROCHE
Messages : 25
Enregistré le : ven. 9 juin 2017 10:00

Re: CREATION D'UN QCM

Messagepar David ROCHE » ven. 8 juin 2018 15:43

Bonjour,
Il n'y a pas de "bonne réponse", si votre programme fonctionne correctement, c'est que le but a été atteint.
Cordialement

Alain_D
Messages : 1
Enregistré le : mar. 25 sept. 2018 21:18

Re: CREATION D'UN QCM

Messagepar Alain_D » mar. 25 sept. 2018 21:23

Bonjour !
Pour donner une autre vision du projet (même si le post date un peu), voici le mien.
Ma version est très différent, mais fonctionne aussi.
J'ai créé deux fichiers textes (un 'Histoire.txt', et l'autre 'Science.txt')de 10 questions chacune.
Cinq questions sont sélectionnées aléatoirement dans les 10.
Il a bien sûr fallu adapter le programme au formalisme du fichier, et ça marche bien !

#Définition de fonction menu():
def menu():
print('Quel questionnaire désirez-vous ?\n\n1 - Histoire\n2 - Science\n3 - Quitter\n')
choix=input('Votre choix: ')
while choix!='1'and choix!='2'and choix!= '3':#Vérification saisie
choix=input("Choisissez entre 1, 2 ou 3.\nVotre choix: ")
return choix
##
#Définition de fonction questionnaire
def questionnaire(type):
#Chargement du fichier et génération de liste
fichier=open(type+'.txt','r')
contenuFichier=[]
for ligne in fichier:
ligne=ligne.strip('\n')
contenuFichier.append(ligne)
#Sélection aléatoire du numéro des questions par l'appel de la fonction de randomisation
listeQ=randomQ()
#Touver et lire les questions
a=0
note=0
while a<len(listeQ):
numQ=str(listeQ[a])#transforme le numéro de la question en str.
for terme in contenuFichier:#On compare le numQ à tous les termes du fichier
if numQ==terme:#si trouvé, on affiche le numéro puis les lignes de la question
i=contenuFichier.index(terme)
print('\nQuestion n°',a+1,' :\n',)
print(contenuFichier[i+1],'\n')
print(contenuFichier[i+2])
print(contenuFichier[i+3])
print(contenuFichier[i+4])
print(contenuFichier[i+5],'\n')
rep=input('Entrez votre réponse : ')
#Contrôle saisie
while str.lower(rep)!='a' and str.lower(rep)!='b' and str.lower(rep)!='c' and str.lower(rep)!='d':
rep=input('Entrez votre réponse en saisissant A, B, C ou D : ')
#Vérification réponse
repFichier=contenuFichier[i+7][0]#On prend le premier caractère de la ligne pour comparer la réponse
if str.lower(repFichier)==str.lower(rep):
print("Bravo, c'est une bonne réponse !")
note=note+1
input("Appuyez sur entrée pour continuer\n")
else:
print("Désolé, c'est une mauvaise réponse.\nLa bonne réponse est :\n")
print(contenuFichier[i+7],'\n')
input("Appuyez sur entrée pour continuer\n")
a=a+1
print("Vous avez obtenu une note de "+str(note)+"/5\n")
##
#Définition de fonction de génération de nombre aléatoire pour sélection de question
def randomQ():
import random
listeRand=[]
i=0
while i<5:
rnd=int(random.random()*10)+1
#Vérification que le nombre randomisé n'est pas déjà dans la liste
while rnd in listeRand:
rnd=int(random.random()*10)+1
listeRand.append(rnd)
i=i+1
return(listeRand)
##
#Programme Principal
type=menu()
while type!='3':
if type=='1':
type='Histoire'
questionnaire(type)
type=menu()

else:
if type=='2':
type='Science'
questionnaire(type)
type=menu()
print("Au revoir !")
quit()
##


Retourner vers « Programmation en Python »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités