Bonjour, jai besoin d'aide rapidement pour mon DM de nsi, exo pratique type bac
Résolu
Leziry00
-
Leziry00 -
Leziry00 -
Bonjour à tous, je suis en terminale et j'ai besoin d'aide pour mon DM de NSI qui est à rendre avant Lundi (je sais je m'y prend très tard). Le DM contient 2 exercice qui sont les suivants:Exercice1:Soit le couple (note,coefficient):
note est un nombre de type flottant (float) compris entre 0 et 20 ;
coefficient est un nombre entier positif
Les résultats aux évaluations d'un élève sont regroupés dans une liste composée de couples (note,coefficient).
Écrire une fonction moyenne qui renvoie la moyenne pondérée de cette liste donnée en paramètre. Par exemple, l’expression moyenne([(15,2),(9,1),(12,3)]) devra renvoyer le résultat du calcul suivant : (2×15+1×9+3×12)/(2+1+3) = 11,83
Exercice2:On cherche à déterminer les valeurs du triangle de Pascal. Dans ce tableau de forme triangulaire, chaque ligne commence et se termine par le nombre 1. Par ailleurs, la valeur qui occupe une case située à l’intérieur du tableau s’obtient en ajoutant les valeurs des deux cases situées juste au-dessus.Créer une fonction pascal. Elle doit renvoyer une liste correspondant au triangle de Pascal de la ligne 1 à la ligne n où n est un nombre entier supérieur ou égal à 2 (le tableau sera contenu dans la variable C). La variable Ck doit, quant à elle, contenir, à l’étape numéro k, la k-ième ligne du tableau. Voici ce que l’on devra obtenir :
>>> pascal(4)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
>>> pascal(5)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]
J'ai fait des recherches sur le net et c'est un des sujets pratiques que j'aurais pû avoir en mars. Voici ce que j'ai fait:
def moyenne(notes):
"""
Fonction qui calcule la moyenne pondérée
Fonction qui renvoie une liste correspondant au triangle de Pascal de la ligne 1 à la ligne n où n est un nombre entier supérieur ou égal à 2
La fonction de l'exo 1 ne fonctionne pas quand je fait print(moyenne(notes) et l'exo 2 crash avec un nombre supérieur à 4. Merci d'avance pour votre aide
note est un nombre de type flottant (float) compris entre 0 et 20 ;
coefficient est un nombre entier positif
Les résultats aux évaluations d'un élève sont regroupés dans une liste composée de couples (note,coefficient).
Écrire une fonction moyenne qui renvoie la moyenne pondérée de cette liste donnée en paramètre. Par exemple, l’expression moyenne([(15,2),(9,1),(12,3)]) devra renvoyer le résultat du calcul suivant : (2×15+1×9+3×12)/(2+1+3) = 11,83
Exercice2:On cherche à déterminer les valeurs du triangle de Pascal. Dans ce tableau de forme triangulaire, chaque ligne commence et se termine par le nombre 1. Par ailleurs, la valeur qui occupe une case située à l’intérieur du tableau s’obtient en ajoutant les valeurs des deux cases situées juste au-dessus.Créer une fonction pascal. Elle doit renvoyer une liste correspondant au triangle de Pascal de la ligne 1 à la ligne n où n est un nombre entier supérieur ou égal à 2 (le tableau sera contenu dans la variable C). La variable Ck doit, quant à elle, contenir, à l’étape numéro k, la k-ième ligne du tableau. Voici ce que l’on devra obtenir :
>>> pascal(4)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
>>> pascal(5)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]
J'ai fait des recherches sur le net et c'est un des sujets pratiques que j'aurais pû avoir en mars. Voici ce que j'ai fait:
def moyenne(notes):
"""
Fonction qui calcule la moyenne pondérée
:param notes: (float) compris entre 0 et 20 :param coeff: (int) :exemple: >>> print(moyenne) moyenne([(15,2),(9,1),(12,3)]) """ notes = [(15,2),(9,1),(12,3)] s=0 scoeff=0 for elt in notes(): note = (15,9,12) coeff = (2,1,3) note = notes[0,0] print(note) for i in range(0,3): s=s+coeff[i]*note[i] scoeff=sc+sum(coeff) print(s/scoeff) def pascal(n): """
Fonction qui renvoie une liste correspondant au triangle de Pascal de la ligne 1 à la ligne n où n est un nombre entier supérieur ou égal à 2
:n:(int) :exemple: >>> pascal(4) [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]] """ C= [[1]] for k in range(1,n): Ck = [1] for i in range(1,k): Ck.append(C[1][i-1]+C[k-1][1]) Ck.append(1) C.append(Ck) return C
La fonction de l'exo 1 ne fonctionne pas quand je fait print(moyenne(notes) et l'exo 2 crash avec un nombre supérieur à 4. Merci d'avance pour votre aide
A voir également:
- Dm nsi 4 nov
- Code gta 4 ps4 - Guide
- Control center 4 - Télécharger - Divers Utilitaires
- 4 gb en go ✓ - Forum Clé USB / Carte mémoire
- 4GB= MO et GO ✓ - Forum Jeux vidéo
- Z flip 4 s'éteint quand je le ferme - Forum Samsung
7 réponses
Bonjour,
L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
De plus si on fait
ca veut dire que la fonction moyenne est censée retourner une valeur ...
et tu passes notes en argument à la fonction , alors que notes est définie à l'intérieur
L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
def test(): print('test') test()
De plus si on fait
print(moyenne(notes))
ca veut dire que la fonction moyenne est censée retourner une valeur ...
et tu passes notes en argument à la fonction , alors que notes est définie à l'intérieur
Bien sur, c'est ce que je te disais dans mon message précédent:
print(moyenne(notes))
et j'obtient : Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
NameError: name 'notes' is not defined
le nom notes n'est pas défini au moment où tu appelle moyenne(notes)
il est défini à l'intérieur de la fonction, donc trop tard
Et je te répète, pour faire print(moyenne(notes)) , il faut un return(s/scoeff) en fin de fonction
print(moyenne(notes))
et j'obtient : Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
NameError: name 'notes' is not defined
le nom notes n'est pas défini au moment où tu appelle moyenne(notes)
il est défini à l'intérieur de la fonction, donc trop tard
Et je te répète, pour faire print(moyenne(notes)) , il faut un return(s/scoeff) en fin de fonction
Comment ça "Et comment je définis ?"
tu l'as déjà fait dans ta fonction:
notes = [(15,2),(9,1),(12,3)]
sauf qu'il faut déplacer ça avant la définition de fonction, donc avant le def ...
tu l'as déjà fait dans ta fonction:
notes = [(15,2),(9,1),(12,3)]
sauf qu'il faut déplacer ça avant la définition de fonction, donc avant le def ...
C'est fait. Maintenat quand je fais
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
File "C:\Lycée\nsi\Terminale\DM\DM NSI 3.py", line 13, in moyenne
for elt in notes():
TypeError: 'list' object is not callable
Je dois enlever le "notes" du
print(moyenne(notes))ça donne:
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
File "C:\Lycée\nsi\Terminale\DM\DM NSI 3.py", line 13, in moyenne
for elt in notes():
TypeError: 'list' object is not callable
Je dois enlever le "notes" du
for elt in notes():?
Non, c'est qu'on ne peut pas parcourir une liste de tuples comme tu le fais
notes est une liste de 3 tuples ...
il faut faire une boucle avec range comme tu le fais plus bas:
C'est élémentaire, tout ça, il faudrait vraiment que tu apprennes les bases ...
notes est une liste de 3 tuples ...
il faut faire une boucle avec range comme tu le fais plus bas:
for k in range(len(notes)):
C'est élémentaire, tout ça, il faudrait vraiment que tu apprennes les bases ...
Oui je sais que j'ai beaucoup à apprendre. Voici le code maintenant:
Quand je fais
notes = [(15,2),(9,1),(12,3)] def moyenne(notes): """ Fonction qui calcule la moyenne pondérée :param notes: (float) compris entre 0 et 20 :param coeff: (int) :exemple: >>> print(moyenne) moyenne([(15,2),(9,1),(12,3)]) """ s=0 scoeff=0 note = (15,9,12) coeff = (2,1,3) for i in range(len(notes)): s=s+coeff[i]*note[i] scoeff=scoeff+coeff[i] return(s/scoeff)
Quand je fais
print(moyenne(notes))ça donne
12,5alors que je devrais obtenir 11,83
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Par contre, tu n'utilises pas la variable notes pour la découper en ses différents éléments
tu as codé "en dur" les variables note et coeff pour faire le découpage
et donc ton programme ne fonctionne que pour ces valeurs là ...
Par contre, tu n'utilises pas la variable notes pour la découper en ses différents éléments
tu as codé "en dur" les variables note et coeff pour faire le découpage
et donc ton programme ne fonctionne que pour ces valeurs là ...
et j'obtient : Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
NameError: name 'notes' is not defined
Et pour l'exerice 2, je tape ça:
et j'obtient:
alors que je devrais avoir ça:
Et quand je tape un nombre supérieur à 4 :
, j'obtient ça:
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
File "C:\Lycée\nsi\Terminale\DM\DM NSI 3.py", line 36, in pascal
Ck.append(C[1][i-1]+C[k-1][1])
IndexError: list index out of range