Forum EduPython

Echanges autour d'EduPython.

Vous n'êtes pas identifié(e).

#1 2022-11-07 18:26:12

Max_M
Membre
Inscription : 2022-10-19
Messages : 3

probleme avec .format()

Bonjour, j'ai terminé un script en python mais à la fin de mon script j'ai utilisé le .format() mais cela me ressort quelque chose de bizarre.

voici mon script :

def total_point (reponse):
    point=list(reponse.values())
    nb_point=len(point)*3
    return nb_point
def  total_QCM(reponses_eleve,reponses):
    note=0
    for cle, valeur in reponses.items():
        for cle1, valeur1 in reponses_eleve.items():
            if cle==cle1:
                if valeur==valeur1:
                    note+=3
                else:
                    note+=2
    return note
print(total_QCM({"Q1":"b","Q2":"a","Q3":"d","Q5":"a"},{"Q1":"c","Q2":"a","Q3":"d","Q4":"c","Q5":"b"}))
print(total_point({"Q1":"c","Q2":"a","Q3":"d","Q4":"c","Q5":"b"}))
print("La note de l'élève est de {} sur {}".format(total_QCM,total_point))

et voici le console :

La note de l'élève est de <function total_QCM at 0x0000011D1358B0A0> sur <function total_point at 0x0000011D1358B010>


Enfaite j'ai envie que avec le dernier print() que les {} prennent les valeurs des fonctions def. Est-ce possible ?
Merci.

Hors ligne

#2 2022-11-07 20:32:19

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 294

Re : probleme avec .format()

Bonsoir,

    Ce n'est pas à cause du format le problème, mais parce que vous voulez afficher une fonction (vous confondez l'objet fonction avec ce qu'elle renvoie). On peut faire ainsi :

def total_point (reponse):
    point=list(reponse.values())
    nb_point=len(point)*3
    return nb_point
def  total_QCM(reponses_eleve,reponses):
    note=0
    for cle, valeur in reponses.items():
        for cle1, valeur1 in reponses_eleve.items():
            if cle==cle1:
                if valeur==valeur1:
                    note+=3
                else:
                    note+=2
    return note

t1 = total_QCM({"Q1":"b","Q2":"a","Q3":"d","Q5":"a"},{"Q1":"c","Q2":"a","Q3":"d","Q4":"c","Q5":"b"})
t2 = total_point({"Q1":"c","Q2":"a","Q3":"d","Q4":"c","Q5":"b"})
print("La note de l'élève est de {} sur {}".format(t1, t2))

Ou encore, en utilisant les F-Strings :

print(f"La note de l'élève est de {t1} sur {t2}")

Bonne soirée,
Vincent

Hors ligne

Pied de page des forums