Bonjour , je dois effectuer 3 tâches et je bloque à la dernière je vous montre :
Ce que je dois faire :
- La somme de tous les entiers pairs entre 0 et 99
- La somme de tous les entiers impairs entre 0 et 99
- Le produit de tous les entiers multiples de 11 entre 0 et 99
Voici mon code :
#!/usr/bin/python3
print("Somme de tous les entiers pairs entre 0 et 99 :")
NBR_ENTIER = list(range(0,99,2))
sum(NBR_ENTIER)
print(sum(NBR_ENTIER))
print("Somme de tous les entier impairs entre 0 et 99 :")
NBR_ENTIER2 = list(range(1,99,2))
sum(NBR_ENTIER2)
print(sum(NBR_ENTIER2))
print("Produit de tous les entiers multiples de 11 entre 0 et 99")
NBR_ENTIER3 = list(range(0,99,11))Mais voilà je n'ai pas d'idée sur comment multiplier les multiples de 11 entre eux.
Si vous auriez une idée svpp
Mercii beaucoup ! ![]()
Tu mets ton résultat dans une variable (initialisée à 1) et tu itere sur chaque élément en multipliant ton résultat par l'élément courant
Le 11 novembre 2020 à 23:12:11 thisismelol a écrit :
Tu mets ton résultat dans une variable (initialisée à 1) et tu itere sur chaque élément en multipliant ton résultat par l'élément courant
Inutile, ça se fait en une ligne en manipulant les opérations sur les listes :
reduce(lambda x, y: x * y, range(0,99,11)[1:])
Tu vois bien qu'il débute VDD
Si l'auteur ne sait pas iterer sur une liste il risque pas de comprendre la syntaxe hyper compact du lambda, que tu ne prends même pas la peine d'expliquer. Tu es venu aider ou te montrer ?
Le 11 novembre 2020 à 23:28:48 Kluent75 a écrit :
Le 11 novembre 2020 à 23:12:11 thisismelol a écrit :
Tu mets ton résultat dans une variable (initialisée à 1) et tu itere sur chaque élément en multipliant ton résultat par l'élément courantInutile, ça se fait en une ligne en manipulant les opérations sur les listes :
reduce(lambda x, y: x * y, range(0,99,11)[1:])
Salut, pourrais tu m'expliquer ta ligne stp? Je n'y comprends pas grand chose
Le 12 novembre 2020 à 08:58:34 AminAA a écrit :
Le 11 novembre 2020 à 23:28:48 Kluent75 a écrit :
Le 11 novembre 2020 à 23:12:11 thisismelol a écrit :
Tu mets ton résultat dans une variable (initialisée à 1) et tu itere sur chaque élément en multipliant ton résultat par l'élément courantInutile, ça se fait en une ligne en manipulant les opérations sur les listes :
reduce(lambda x, y: x * y, range(0,99,11)[1:])Salut, pourrais tu m'expliquer ta ligne stp? Je n'y comprends pas grand chose
Hello, biensûr :
on part de range(0,99,11) que tu connais :
[1:] On retire le premier élément pour ne garder que la sous-liste commençant par 11 (on dégage le 0 pour éviter que la multiplication renvoie 0)
reduce : permet de réduire une collection de n éléments en 1 seul élément appliquant successivement une fonction de transformation
lambda x,y: x*y => fonction de transformation. 2 éléments de la liste sont réduits en 1 seul en utilisant une multiplication...
donc si tu as (A, B, C) ça sera réduit comme ça : ((A, B), C) => (A*B, C) => A*B*C
Note qu'il existe aussi des librairies python permettant de multiplier directement les éléments, comme tu le fais avec sum.
Notamment numpy ou math qui contiennent la méthode prod. Si tu peux les utiliser, à mon sens ces dernières sont mieux. En tout cas dans la vraie vie c'est comme ça qu'on code, on ne s'amuse pas à itérer tous les éléments à la main.
Si c'est un exercice dans le cadre d'une formation scolaire, peut-être qu'ils attendent que tu itères à la main mais c'est dommage => on se retrouve avec beaucoup de jeunes développeurs incapables de coder de façon moderne, alors que ce n'est pas plus difficile de faire ce que j'ai proposé.
Un petit article à ce sujet : https://www.geeksforgeeks.org/python-multiply-numbers-list-3-different-ways/
Le 12 novembre 2020 à 09:57:26 Kluent75 a écrit :
Le 12 novembre 2020 à 08:58:34 AminAA a écrit :
Le 11 novembre 2020 à 23:28:48 Kluent75 a écrit :
Le 11 novembre 2020 à 23:12:11 thisismelol a écrit :
Tu mets ton résultat dans une variable (initialisée à 1) et tu itere sur chaque élément en multipliant ton résultat par l'élément courantInutile, ça se fait en une ligne en manipulant les opérations sur les listes :
reduce(lambda x, y: x * y, range(0,99,11)[1:])Salut, pourrais tu m'expliquer ta ligne stp? Je n'y comprends pas grand chose
Hello, biensûr :
on part de range(0,99,11) que tu connais :
[1:] On retire le premier élément pour ne garder que la sous-liste commençant par 11 (on dégage le 0 pour éviter que la multiplication renvoie 0)
reduce : permet de réduire une collection de n éléments en 1 seul élément appliquant successivement une fonction de transformation
lambda x,y: x*y => fonction de transformation. 2 éléments de la liste sont réduits en 1 seul en utilisant une multiplication...donc si tu as (A, B, C) ça sera réduit comme ça : ((A, B), C) => (A*B, C) => A*B*C
Note qu'il existe aussi des librairies python permettant de multiplier directement les éléments, comme tu le fais avec sum.
Notamment numpy ou math qui contiennent la méthode prod. Si tu peux les utiliser, à mon sens ces dernières sont mieux. En tout cas dans la vraie vie c'est comme ça qu'on code, on ne s'amuse pas à itérer tous les éléments à la main.
Si c'est un exercice dans le cadre d'une formation scolaire, peut-être qu'ils attendent que tu itères à la main mais c'est dommage => on se retrouve avec beaucoup de jeunes développeurs incapables de coder de façon moderne, alors que ce n'est pas plus difficile de faire ce que j'ai proposé.
Un petit article à ce sujet : https://www.geeksforgeeks.org/python-multiply-numbers-list-3-different-ways/
Merci ton explication m'a beaucoup aider et effectivement je suis dans un cadre scolaire du coup comment pourrais-je faire pour tout itérer à la main?
Merci encore
Commence à 11 (0 retournera 0, 1 tu feras 1, 12, 23 qui sont pas multiples de 11 et 1 est élément neutre donc ça sert à rien), déjà.
Après, y’a math.prod apparemment, sinon je suppose qu’ils veulent que tu fasses une boucle for sur ta liste.
pour x element de ta liste... je te laisse faire le reste
Le 12 novembre 2020 à 14:10:35 AminAA a écrit :
Le 12 novembre 2020 à 09:57:26 Kluent75 a écrit :
Le 12 novembre 2020 à 08:58:34 AminAA a écrit :
Le 11 novembre 2020 à 23:28:48 Kluent75 a écrit :
Le 11 novembre 2020 à 23:12:11 thisismelol a écrit :
Tu mets ton résultat dans une variable (initialisée à 1) et tu itere sur chaque élément en multipliant ton résultat par l'élément courantInutile, ça se fait en une ligne en manipulant les opérations sur les listes :
reduce(lambda x, y: x * y, range(0,99,11)[1:])Salut, pourrais tu m'expliquer ta ligne stp? Je n'y comprends pas grand chose
Hello, biensûr :
on part de range(0,99,11) que tu connais :
[1:] On retire le premier élément pour ne garder que la sous-liste commençant par 11 (on dégage le 0 pour éviter que la multiplication renvoie 0)
reduce : permet de réduire une collection de n éléments en 1 seul élément appliquant successivement une fonction de transformation
lambda x,y: x*y => fonction de transformation. 2 éléments de la liste sont réduits en 1 seul en utilisant une multiplication...donc si tu as (A, B, C) ça sera réduit comme ça : ((A, B), C) => (A*B, C) => A*B*C
Note qu'il existe aussi des librairies python permettant de multiplier directement les éléments, comme tu le fais avec sum.
Notamment numpy ou math qui contiennent la méthode prod. Si tu peux les utiliser, à mon sens ces dernières sont mieux. En tout cas dans la vraie vie c'est comme ça qu'on code, on ne s'amuse pas à itérer tous les éléments à la main.
Si c'est un exercice dans le cadre d'une formation scolaire, peut-être qu'ils attendent que tu itères à la main mais c'est dommage => on se retrouve avec beaucoup de jeunes développeurs incapables de coder de façon moderne, alors que ce n'est pas plus difficile de faire ce que j'ai proposé.
Un petit article à ce sujet : https://www.geeksforgeeks.org/python-multiply-numbers-list-3-different-ways/
Merci ton explication m'a beaucoup aider et effectivement je suis dans un cadre scolaire du coup comment pourrais-je faire pour tout itérer à la main?
Merci encore
Tu as trois exemples dans son lien. Le premier est le plus scolaire, assimile-le bien pour commencer
Sinon à partir de Python 3.8, il y a la méthode prod dans le module math :
import math
math.prod([i for i in range(1, 99) if i % 11 == 0])Il y a aussi une fonction similaire dans le module numpy :
import numpy as np
np.prod([i for i in range(1, 99) if i % 11 == 0])Attention, dans les deux cas, le nombre 99 (multiple de 11) ne sera pas pris en compte.