Projet P2

mail@pastecode.io avatar
unknown
plain_text
2 years ago
3.9 kB
7
Indexable
Never
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
        rep = input("Veuillez choisir une des réponses si dessus \n")
        bon = False
        for i in correct:
            if rep == i:
                print("Réponse correcte.")
                print(str(questions[q][1][res[int(rep)-1]][2]))
                bon = True

        if not bon:
            print("Mauvaise réponse.")
            print(str(questions[q][1][res[int(rep)-1]][2]))
            ptsev -= 1

            ptjuste -= point_calculator(ans_true,len(questions[q][1])-ans_true)
        else:
            ptsymp += 1
            ptsev += 1
            ptjuste += 1


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