Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regroupez des tâches en utilisant des fonctions

27 décembre 2021 à 16:30:24

j'ai un problème sur le cour "Regroupez des tâches en utilisant des fonctions" je croyais avoir plutôt bien compris le cour jusqu'à l'exo.

consignes :

Créez une fonction permettant de calculer le produit d'une liste de nombres

code :

def produit_entiers(liste_entiers):
    resultat = 0
    for calcul in liste_entiers:
        resultat = resultat + calcul
    return resultat
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 décembre 2021 à 16:36:05

Il faut ensuite appeler ta fonction avec son paramètre qui est ici une liste de nombre.

def produit_entiers(liste_entiers):
    resultat = 0
    for calcul in liste_entiers:
        resultat = resultat + calcul
    return resultat

res = produit_entiers([12, 34, 43, 45, 67])
print(res)



  • Partager sur Facebook
  • Partager sur Twitter
27 décembre 2021 à 16:43:56

enfaite le probleme c'est que en dessous nous avons une ligne de code que nous sommes sencé pas touché la voici 
def produit_entiers(liste_entiers):
    resultat = 0
    for calcul in liste_entiers:
        resultat = resultat + calcul
    return resultat

assert 1 == produit_entiers([1, 1, 1])
assert 6 == produit_entiers([1, 2, 3])
assert 0 == produit_entiers([1, 2, 3, 90, 0])
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 décembre 2021 à 16:48:22

Ah ok ce n'est pas somme d'entier qui est demandé, mais une multiplication (produit)

exemple 1 * 1 * 1 = 1

  • Partager sur Facebook
  • Partager sur Twitter
27 décembre 2021 à 16:52:28

un truc comme sa ? 
def produit_entiers(liste_entiers):
    resultat = 0
    for calcul in liste_entiers:
        resultat = resultat * produit_entiers[1] * produit_entiers[2]
    return resultat
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 décembre 2021 à 17:13:52

Non, c'est plus simple, un peu comme l'exo précédent :

def produit_entiers(liste_entiers):
    resultat = 1
    for entier in liste_entiers:
        resultat = resultat * entier
    return resultat
 
assert 1 == produit_entiers([1, 1, 1])
assert 6 == produit_entiers([1, 2, 3])
assert 0 == produit_entiers([1, 2, 3, 90, 0])

Il faut que tu comprennes pourquoi cette fois-ci résultat est initialisé à 1

Et quand tu utilises des listes l'index démarre à 0 et pas à 1 ( liste_entiers[0] et pas produit_entiers[1] )

Je pense qu'il faut que tu travailles d'avantage Python car tu mélanges un peu tout ;)

-
Edité par Anonyme 27 décembre 2021 à 17:14:39

  • Partager sur Facebook
  • Partager sur Twitter
27 décembre 2021 à 17:21:25

a oui effectivement j'ai compris pourquoi fallait initialiser à 1 mais a quoi sert assert ?

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 décembre 2021 à 17:33:37

LukaPieres a écrit:

a oui effectivement j'ai compris pourquoi fallait initialiser à 1 mais a quoi sert assert ?


L’instruction assert de Python est une aide au débogage qui teste une condition. Si la condition est vraie, cela ne fait rien et ton programme continue simplement à s’exécuter. Mais si la condition d’assertion est fausse, elle lève une exception AssertionError.
  • Partager sur Facebook
  • Partager sur Twitter
27 décembre 2021 à 17:37:34

a ok mais dcp quand je fais "run" ya pas d'erreur mais ya pas de résultat non plus
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 décembre 2021 à 17:42:51

Parce que ton résultat est bon et donc assert ne lève pas d'exception, modifie pour tester.

assert 2 == produit_entiers([1, 1, 1])


De plus la comparaison dans l'assert devrait plutot être :

produit_entiers([1, 1, 1]) == 1



-
Edité par Anonyme 28 décembre 2021 à 4:50:11

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 décembre 2021 à 17:48:57

Bah oui, c'est le but, car 1*1*1, ça ne fait pas 2
  • Partager sur Facebook
  • Partager sur Twitter
27 décembre 2021 à 17:50:12

a oui ok j'avais pas compris le nombre de derrière
  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2022 à 16:44:25

Bonjour à tous,

Quand j'effectue l'exercice, il me met une assertioneror avec la ligne

assert 0 == porduit_entiers([1,2,3,90,0])

mais quand j'écris mon code dans sublimetext, il ne me marque aucune erreur. Voilà la réponse qui sort sur la sandbox.

  File "/home/nt-user/workspace/produit_entiers.py", line 11, in <module>
    assert 0 == produit_entiers([1, 2, 3, 90, 0])
AssertionError


Que puis-je faire?

Merci pour vos réponses

-
Edité par Piopiote 19 mars 2022 à 16:46:35

  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2022 à 12:36:06

fait un affichage de ton calcul pour cette liste  avec un print(produit_entiers([1, 2, 3, 90, 0])) pour voir le résultat qui devrait être 0
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2022 à 9:16:18

Effectivement lorsque je tape print(produit_entiers([1,2,3,90,0]) cela affiche bien 0
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2022 à 10:43:42

si l'assert te renvoie toujours un erreur, poste ton code (via le bouton </>) pour voir où peut être l'erreur
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2022 à 19:11:45

Il ne met plus d'erreur, l'assert était déjà fais quand j'ai fais ce chapître. Merci à vous
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2022 à 19:27:43

d'où venait l'erreur d'assertion signalé quelques messages plus haut alors ?? o_O
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2022 à 6:47:22

Je pense que le problème de mon exercice était que je ne faisais pas de boucle dans la fonction dans la sandbox. Une fois que l'exo a été modifié avec la boucle, plus de problèmes du coup.
  • Partager sur Facebook
  • Partager sur Twitter