projet
unknown
plain_text
3 years ago
4.4 kB
9
Indexable
import qcm
import random
# ------------------------------------------------------------------
# FONCTIONS UTILITAIRES
# ------------------------------------------------------------------
def maj(c1, c2): # Vérifie si deux mots sont les mêmes en ignorant les majuscules
return c1.upper() == c2.upper()
def point_calculator(good_ans, bad_ans): # Calcule le nombre de points qu'il faut rétirer en cas de cotation juste
point = good_ans/bad_ans
return point
# -----------------------------------------------------------------
# INTRODUCTION DU QCM
# -----------------------------------------------------------------
print("Bienvenue dans notre cher QCM !")
filename = input("Veuillez choisir votre QCM \n") # demande à l'utilisateur de choisir son QCM
mode = input("Veuillez choisir un mode (comparatif ou évaluatif) \n")
if maj(mode, "évaluatif"):
difficulty = input("Veuillez choisir un niveau de cotation (sympa, sévère et juste) \n")
while not maj(difficulty, "sympa") and not maj(difficulty, "sévère") and not maj(difficulty, "juste"): #teste si l'utilisateur a bien introduit une des trois options
print("Veuillez entrer une difficulté correcte !")
difficulty = input("Veuillez choisir un niveau de cotation (sympa, sévère et juste) \n")
# --------------------------------------------------------------
# FONCTION PRINCIPALE
# --------------------------------------------------------------
def launch_qcm(filename, mode):
# Fonction qui permet de lancer le qcm avec le nom du fichier et la difficultée en entrée
questions = qcm.build_questionnaire(filename)
ptsev = 0
ptjuste = 0
ptsymp = 0
print("Voici le questionnaire...")
print("Veuillez entrer le numéro de la réponse que vous pensez correct.")
for q in range(len(questions)):
print("\tQuestion " + str(q+1) + ": \"" + questions[q][0] + "\"")
res = random.sample(range(0,len(questions[q][1])), len(questions[q][1]))
correct = []
ans_true = 0
for r in range (len(questions[q][1])):
print("\t\tReponses " + str(r+1) + ":")
print("\t\t\tMessage: \"" + questions[q][1][res[r]][0] + "\"")
if questions[q][1][res[r]][1] is True:
correct.append(str(r+1))
ans_true += 1
continuer = True
while continuer is True:
try:
rep = input("Veuillez choisir une des réponses si dessus \n").split(" ")
c = 0
for j in rep:
bon = False
for i in correct:
if j == i:
print(j + " est une réponse correcte.")
print(str(questions[q][1][res[int(j)-1]][2]))
bon = True
c += 1
if not bon:
print(str(questions[q][1][res[int(j)-1]][2]))
print(j + " est une mauvaise réponse.")
ptsev -= 1
ptjuste -= point_calculator(ans_true,len(questions[q][1])-ans_true)
if c > 0:
ptsymp += 1
ptsev += 1
ptjuste += 1
continuer = False
except:
print("Veuillez rentrer un des numéros des réponses ci-dessus.")
if maj(mode, "évaluatif"):
if maj(difficulty, "sympa"):
print("Votre score est de " + str(ptsymp) + "/" + str(len(questions)))
elif maj(difficulty, "juste"):
print("Votre score est de " + str(ptjuste) + "/" + str(len(questions)))
else:
print("Votre score est de " + str(ptsev) + "/" + str(len(questions)))
else:
print("Votre score sympa est de " + str(ptsymp) + "/" + str(len(questions)))
print("Votre score sévère est de " + str(ptsev) + "/" + str(len(questions)))
print("Votre score juste est de " + str(ptjuste) + "/" + str(len(questions)))
# Gestion d'erreur si l'utilisateur choisi un fichier non correct
try:
launch_qcm(filename, mode)
continuer = False
except:
print("Veuillez choisir un nom de QCM correct")Editor is loading...