projet

 avatar
unknown
plain_text
2 years ago
4.4 kB
6
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...