Dans une entreprise, chaque mois, les salariés ont un salaire et une prime. Le comptable cherche à faire des statistiques. Et comme il ne sait pas se servir d'un ordinateur, comme d'habitude c'est sur vous que ça retombe ! On cherche donc à savoir quels sont les salariés :
- qui ont au moins 3000 euros de salaire par mois.
- qui ont eu au moins 250 euros de prime ce mois ci.
- dont la prime fait au moins 6% du salaire.
Les données en entrée sont :
personnes
: la liste des salariés.salaires
: la liste de salaires par mois (liste d'entiers).primes
: la liste des primes du mois (liste d'entiers).
Les 3 listes sont dans le même ordre, c'est-à-dire que le premier nom de la liste personnes
à pour salaire le premier de salaires
, et pour prime la première de primes
, et ainsi de suite pour le deuxième, le troisième etc.
On veut en sortie 3 listes :
- la liste des personnes dont le salaire est 3000 euros ou plus.
- la liste des personnes dont la prime est de 250 euros ou plus.
- la liste des personnes dont la prime fait au moins 6% du salaire.
Vous devez écrire une fonction statistiques_salaires
qui prends dans l'ordre les paramètres personnes
, salaires
, primes
et qui renvoie dans l'ordre les 3 listes de personnes.
Exemple d'utilisation
personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann",
"Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"]
salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900]
primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180]
>>> statistiques_salaires(personnes, salaires, primes)
[['Torvalds', 'Turing', 'Iverson', 'Thompson'],
['VomNeumann'],
['Stallman', 'Perlis', 'VomNeumann', 'Hamming', 'Ritchie']]
Bonus
Si vous souhaitez augmenter la difficulté, vous pouvez également résoudre l'exercice en imposant les conditions ci-dessous.
- refaire l'exercice en utilisant une seule boucle dans tout le programme.
- gérer le cas où une personne à un salaire nul (alors le calcul des 6% est compliqué).
- refaire l'exercice en utilisant aucune boucle.
personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] def statistiques_salaires(personnes, salaires, primes): zipped = list(zip(personnes, salaires, primes)) salaires_3000, primes_250, primes_6percent_salaire = [], [], [] for (x, y, z) in zipped: if y >= 3000: salaires_3000.append(x) if z >= 250: primes_250.append(x) if z >= y * 0.06: primes_6percent_salaire.append(x) return [salaires_3000, primes_250, primes_6percent_salaire]
personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 def statistiques_salaires(personnes, salaires, primes) -> list[list, list, list]: # en sortie 3 listes return [ # la liste des personnes dont le salaire est 3000 euros ou plus [personne for personne, salaire in zip(personnes, salaires) if salaire >= 3000], # la liste des personnes dont la prime est de 250 euros ou plus [personne for personne, prime in zip(personnes, primes) if prime >= 250], # la liste des personnes dont la prime fait au moins 6% du salaire [personne for personne, salaire, prime in zip(personnes, salaires, primes) if prime >= salaire * 0.06], ]
Lionel

personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] premium_salaire = [] premium_prim = [] normal_prim = [] def statistiques_salaires(personnes :list , salaires: list , primes : list): for x in range(1 , len(personnes)+1 , 1): if salaires[x-1:x][0] >= 3000: premium_salaire.append(personnes[x-1:x][0]) if primes[x-1:x][0] >= 250: premium_prim.append(personnes[x-1:x][0]) percent_prime = (primes[x-1:x][0]/salaires[x-1:x][0])*100 if percent_prime >= 6: normal_prim.append(personnes[x-1:x][0]) print('la liste des personnes dont le salaire est 3000 euros ou plus est :') print(premium_salaire) print('la liste des personnes dont la prime est de 250 euros ou plus est') print(premium_prim) print('la liste des personnes dont la prime fait au moins 6% du salaire est') print(normal_prim) statistiques_salaires(personnes , salaires , primes) # Votre code ici 👇
SOUHAIL

personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 import itertools def statistiques_salaires(personnes: list, salaires: list, primes: list) -> list: # Salaire supérieur à 3000 salaire_sup = list(map(lambda x: x >= 3000,salaires)) filter_salaire_sup = [salaire for salaire in itertools.compress(personnes, salaire_sup)] # Prime supérieur à 250 bonus = list(map(lambda y: y >= 250, primes)) filter_bonus = [prime_sup for prime_sup in itertools.compress(personnes, bonus)] # Prime au moins 6% du salaire percentage = list(map(lambda z: z*0.06, salaires)) converted_primes = [float(prime) for prime in primes] filter_perce_bonus = [pers for pers, perce in zip(personnes, zip(converted_primes, percentage)) if perce[0] >= perce[1]] return [filter_salaire_sup, filter_bonus, filter_perce_bonus]
Arnold

personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 dictionnaire = {} def statistiques_salaires(personnes, salaires, primes): liste = [] salaire_sup_3000 = [] prime_sup_250 = [] prime_6_percent = [] for index in range(len(personnes)): if salaires[index]>=3000: salaire_sup_3000.append(personnes[index]) liste.append(salaire_sup_3000) for index in range(len(personnes)): if primes[index]>= 250: prime_sup_250.append(personnes[index]) liste.append(prime_sup_250) for index in range(len(personnes)): calcul_6_percent_salaire = round(salaires[index]*0.06, 2) if primes[index] >= calcul_6_percent_salaire: prime_6_percent.append(personnes[index]) liste.append(prime_6_percent) return liste print(list(statistiques_salaires(personnes, salaires, primes)))
personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 def statistiques_salaires (personnes, salaires, primes): personnes_sup_or_equal_3000 = [] personnes_primes_sup_or_equal_250 = [] personnes_primes_percent_6 = [] for i, value in enumerate(salaires): if value >= 3000: personnes_sup_or_equal_3000.append(personnes[i]) if primes[i] >= 250: personnes_primes_sup_or_equal_250.append(personnes[i]) if primes[i] >= salaires[i] * 0.06: personnes_primes_percent_6.append(personnes[i]) return [personnes_sup_or_equal_3000, personnes_primes_sup_or_equal_250, personnes_primes_percent_6] statistiques_salaires(personnes, salaires, primes)
aanks

personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 def statistiques_salaires(personnes, salaires, primes): salaires_3000 = [personne for personne, salaire in zip(personnes, salaires) if salaire >= 3000] prime_250 = [personne for personne, prime in zip(personnes, primes) if prime >= 250] prime_6_pourcent = [personne for personne, salaire, prime in zip(personnes, salaires, primes) if (prime/salaire)*100 >= 6] return [salaires_3000, prime_250, prime_6_pourcent]
Salvatore

personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 # VERSION AVEC UNE BOUCLE ET CAS DE SALAIRE NUL def statistiques_salaires(personnes, salaires, primes): salaires_3k_plus = [] primes_250_plus = [] primes_6_percent_plus = [] compteur = 0 for i in range(len(salaires)): if salaires[i] >= 3000: salaires_3k_plus.append(personnes[i]) if primes[i] >= 250: primes_250_plus.append(personnes[i]) if salaires[i] != 0: if (primes[i]/salaires[i]) >= 0.06: primes_6_percent_plus.append(personnes[i]) compteur += 1 return [salaires_3k_plus, primes_250_plus, primes_6_percent_plus]
Swidenn

from collections import ChainMap personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇 def statistiques_salaires(personnes, salaires, primes): salaire_p = dict(zip(personnes, salaires)) prime_p = dict(zip(personnes, primes)) haut_salaire = [name for name, salaire in salaire_p.items() if salaire > 3000] haute_prime = [name for name, prime in prime_p.items() if prime > 250] pourcentage_prime_list = [] for salaire in salaires: calcul_pourcentage = primes[0]/salaire *100 pourcentage_prime_list.append(calcul_pourcentage) primes.remove(primes[0]) prime_salaire = dict(zip(personnes, pourcentage_prime_list)) pourcentage_prime_p = [name for name, prime in prime_salaire.items() if prime >=6] resultat = [haut_salaire, haute_prime, pourcentage_prime_p] return resultat
personnes = ["Stallman", "Torvalds", "Perlis", "Turing", "VomNeumann", "Iverson", "Boole", "Hamming", "Knuth", "Ritchie", "Thompson"] salaires = [1500, 4700, 1500, 3800, 890, 4200, 480, 395, 1710, 1300, 3900] primes = [190, 0, 117, 100, 500, 60, 0, 150, 0, 100, 180] # Votre code ici 👇
Un instant...
Test avec les données de l'entreprise
La fonction doit être capable de renvoyer les 3 listes demandées par le comptable.
Bravo, tu as réussi cet exercice de code 🥳

Soumettre ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.
Ma solution :
Mes notes
Sauvegardé