Calcul moyenne pondérée

Résolu/Fermé
Max1m3 - 20 janv. 2021 à 18:00
jee pee Messages postés 35881 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 septembre 2022 - 21 janv. 2021 à 12:37
Bonjour,
J'ai codé un petit programme qui calcule une moyenne pondérée, mais il y a un bug et quand je le lance, j'ai beau entrer que je n'ai plus de notes à mettre, il continue la boucle "while".
J'ai aussi essayé en faisant "while rep!=1" mais ça ne marche pas...
Quelqu'un pourrait m'aider ?
Voici le programme :

n=0
c=0
snc=0
sn=0
sc=0
mo=0
rep=0


while "rep==0" :
n=input("Donnez votre note (Faites attention à la mettre sur 20 avant)")
"sn=sn+n"

c=input("Donnez le coef de la note que vous venez de mettre")
"sc=sc+c"

"snc=snc+n*c"

rep=input("As-tu une autre note à entrer ? (0 pour oui et 1 pour non)")
print(n)
print(sc)

if "rep=1" :
mo=snc/sc
input("Ta moyenne est :", mo)
if "mo>16" :
input("Bravo ! Tu as les félicitations !!!")
if "mo<16" :
if "mo>14" :
input("Bravo tu as le tableau d'honneur !!!")
if "mo<14" :
input("Bravo !!! Tu as les encouragements !!! Tout dépendra du conseil de classe.")





Configuration: Windows / Chrome 87.0.4280.141
A voir également:

4 réponses

Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 859
21 janv. 2021 à 08:41
Bonjour

Hier je me demandais si tous ces guillemets étaient là pour signifier l’indentation ou autre.

Max1m3, il faut que tu comprennes la différence essentielle entre du texte et de la donnée.
Si, sur une feuille de papier est écrits 3 pommes, il n’y a pas réellement 3 pommes sur la feuilles, juste un texte qui en fait mention. C’est toi qui analyse en fonction du contexte, ce que représente ce texte:
  • il reste 3 pommes dans le panier => c’est dans le panier que je vais pouvoir compter des pommes
  • il est haut comme 3 pommes => c’est une taille en fait
  • j’habite rue des 3 pommes => c’est un lieu


Le programme ne sait pas contextualiser, il lui faut donc des données.
Un if ou un while, prend un booléen comme donnée.
Ce booléen peut être directement une valeur (true ou false) ou le résultat d’une opération (une condition par exemple)

Si tu lui donnes autre chose, soit ça plante, soit ça fait ce que ça veut

Un petit exemple
https://www.onlinegdb.com/43Zh4XwDS

Tu as le code dans la console du haut.
Après avoir cliqué, sur Run, tu auras le résultat dans la console du bas
1
Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 859
20 janv. 2021 à 18:27
Bonjour

en Pyhton, il y a un truc primordial => l'indentation.

Pour qu'on puisse t'aider, il faut qu'on la vois.

Pour ça, il faut lire attentivement et appliquer ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
jee pee Messages postés 35881 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 septembre 2022 8 829
20 janv. 2021 à 18:30
salut, oui dans le cas présent l'indentation fait tout ;-)

@Max1m3 et tu peux tout de suite corriger, après le calcul de la moyenne, pour afficher, ce n'est pas input mais ???
0
n=0
c=0
snc=0
#snc sera le numérateur du calcul final
sn=0
sc=0
mo=0
rep=0


while "rep==0" :
    n=input("Donnez votre note (Faites attention à la mettre sur 20 avant)")
    "sn=sn+n"

    c=input("Donnez le coef de la note que vous venez de mettre")
    "sc=sc+c"

    "snc=snc+n*c"

    rep=input("As-tu une autre note à entrer ? (0 pour oui et 1 pour non)")

if "rep==1" :
    mo=snc/sc
    print("Ta moyenne est :", mo)
    if "mo>16" :
        print("Bravo ! Tu as les félicitations !!!")
    if "mo<16" :
        if "mo>14" :
            print("Bravo tu as le tableau d'honneur !!!")
    if "mo<14" :
        print("Bravo !!! Tu as les encouragements !!! Tout dépendra du conseil de classe.")

Voici le code, en espérant que vous pourrez m'aider
0
jee pee Messages postés 35881 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 septembre 2022 8 829
Modifié le 20 janv. 2021 à 21:11
Tu dois débuter en programmation, et en python non ?

Je ne vois vraiment pas la justification des lignes entre guillemets "sn=sn+n" ne fait rien, comme "rep==1". Enlève tous ces guillemets, cela existe dans des cas particuliers mais pas là.

Après il te faut réviser les types de variables, les chaines (str), entiers (integer) et nombres virgule flottante (float). Sur input on récupère une chaine, il faut donc la convertir en float pour faire des calculs, et éventuellement en int pour rep.

Pour le while
while rep==0 :
   ...
    rep=input("As-tu une autre note à entrer ? (0 pour oui et 1 pour non)")
    rep=int(rep)
0
jee pee Messages postés 35881 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 septembre 2022 8 829
21 janv. 2021 à 12:37
Nous serions contents d'avoir ton code final, il est surement possible de te donner d'autres conseils ;-)
0