Dans cet exercice, on cherche à connaître le nombre total d'employés d'une entreprise en partant du texte défini dans la variable sentence.
Vous devez récupérer le nombre total d'employés (1771) dans la variable employee_count.
Pour séparer une chaîne de caractères sur un caractère, on peut utiliser la méthode split.
Vous devrez appliquer une opération spécifique sur le nombre 529 qui comportera un caractère en trop (le point de la fin de la phrase).
Code
sentence = "La première usine dispose de 324 employés. La deuxième usine en compte 529. L'unité de Los Angeles dispose quant à elle de 918 employés."
words = sentence.split()
employee_count = sum(int(word.strip(".")) for word in words if word.strip(".").isdigit())
Explications
La première opération que nous devons réaliser consiste à isoler chaque mot de la phrase.
Pour ce faire on peut utiliser la méthode split sans lui passer d'argument pour séparer la chaîne de caractères sur les espaces :
>>> sentence = "La première usine dispose de 324 employés. La deuxième usine en compte 529. L'unité de Los Angeles dispose quant à elle de 918 employés."
>>> sentence.split()
['La', 'première', 'usine', 'dispose', 'de', '324', 'employés.', 'La', 'deuxième', 'usine', 'en', 'compte', '529.', "L'unité", 'de', 'Los', 'Angeles', 'dispose', 'quant', 'à', 'elle', 'de', '918', 'employés.']
Nous pouvons ensuite créer la structure de base de notre compréhension de liste :
words = sentence.split()
employee_count = [word for word in words]
On peut récupérer les chaînes de caractères de la phrase qui contiennent des nombres grâce à la méthode isdigit. Ajoutons là à notre compréhension de liste :
employee_count = [word for word in words if word.isdigit()]
Malheureusement, nous n'obtenons que 2 des 3 nombres avec la compréhension de liste ci-dessus :
>>> [word for word in words if word.isdigit()]
['324', '918']
Le problème vient du fait que le 2e nombre dans la phrase est suivi d'un point. Quand on utilise la méthode split, nous récupérons donc 529. au lieu de 529.
La méthode isdigit ne considère donc pas cette chaîne de caractères comme un nombre à cause du point.
Nous devons donc traiter ce cas de figure en enlevant le point avec la méthode strip :
employee_count = [word.strip(".") for word in words if word.strip(".").isdigit()]
Nous récupérons ainsi les 3 nombres de la phrase :
>>> [word.strip(".") for word in words if word.strip(".").isdigit()]
['324', '529', '918']
Comme nous souhaitons additionner ces 3 nombres ensemble, nous devons également les convertir en nombre entier, grâce à la fonction int :
>>> [int(word.strip(".")) for word in words if word.strip(".").isdigit()]
[324, 529, 918]
Maintenant que notre liste contient uniquement des nombres entiers, nous pouvons faire la somme grâce à la fonction sum :
>>> sum([int(word.strip(".")) for word in words if word.strip(".").isdigit()])
1771
À noter que nous pouvons passer un générateur directement à la fonction sum, ce qui nous permet d'enlever les crochets autour de la compréhension de liste :
>>> sum(int(word.strip(".")) for word in words if word.strip(".").isdigit())
1771
À noter
Dans un cas comme celui-ci, nous obtenons une compréhension de liste qui devient difficile à lire. De plus, nous répétons la méthode strip deux fois de la même façon.
Dans un cadre professionnel, il pourrait être préférable de passer par une boucle for classique pour garder un code plus lisible.
Lionel

cam84

Nicholas

akiru

Elibo Lionel

Rob

Axel

julien

Mr Ctrl-cv

Lex

victor

Johann56

Virgile RASERA

Romu80

Membre #29349

ayat

Julien

Hamza

lboboss

BotUser_NBS

hipo

yassino

Mehdi

Rio

Killian

Saif

Vincent

Jack

SORAYA

Membre #38870

Kyro

Erwan

Célian

Mathieux

Rick

Ju

timeo

Gralou

Elias

yoann

Oumar

marius

Kei

Yanis

Membre #41219

Ali

Jason

zecode

Livio

Mike

Olivier

Mathieu DEBRUYNE

Laurent Jouron

Charles

Lise

Adam

Samuel FLORES

kanoguti

Hugo Lecodeur

Gabriel Trouvé

Haifa

Helena

Julien CRUZ

Simplice Franc NKOUARI NSENGU

Jérôme

Yanis

Karamoko Sanogo

Cyril

Math24

Cécile

sentence = "La première usine dispose de 324 employés. La deuxième usine en compte 529. L'unité de Los Angeles dispose quant à elle de 918 employés."
sentence = "La première usine dispose de 324 employés. La deuxième usine en compte 529. L'unité de Los Angeles dispose quant à elle de 918 employés."
words = sentence.split()
employee_count = sum([int(word.strip(".")) for word in words if word.strip(".").isdigit()])Console
Un instant...
Résultats
La variable employee_count contient le nombre 1771.
assert employee_count == 1771, f"La variable employee_count ne contient pas le bon nombre ({employee_count} au lieu de 1771)."Bravo, tu as réussi cet exercice de code 🥳
Envoyer ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Ma solution :
