Le sac à dos mais qu'elle chose vraiment rigolo...
Oh la bonne boutade...
Programme:
masse_max_sac = 30
systeme_objets=[["Objet1",70,13,70/13],["Objet2",40,12,40/12],["Objet3",30,8,
30/8],["Objet4",30,10,30/10]]
systeme_objets.sort(key=lambda colonne:colonne[-1],reverse = True)
print(systeme_objets)
def sac_a_dos(masse_max_sac, systeme_objets):
masse = 0
prix=0
liste_objets = []
for i in range(len(systeme_objets)):
if masse + systeme_objets[i][-2] <= masse_max_sac:
masse = masse + systeme_objets[i][-2]
prix=prix+systeme_objets[i][-3]
liste_objets.append(systeme_objets[i])
return liste_objets, (str(masse)+" kg"), (str(prix) +" Euros")
print(sac_a_dos(30, systeme_objets))
Explications:
On affecte à la variable masse_max_sac la valeur de 30 (ici ce sera 30kg que l'on peut porter dans e sac.
Puis on affecte à systeme_objets la liste contenant des sous-listes qui contiennent l'objet, sa valeur, son poid, et enfin la valeur massique de l'objet.
On tri e systeme d'objets par valeurs décroissantes pour les valeur massique. On utilise key et d'une fonction lambda pour faire porter le tri sur le dernier élément de chaque sous-liste (valeur massique). On affiche la liste systeme_objet dans la console.
On définie une fonction sac_a_dos qui va prendre les valeur de masse_max_sac et de la liste systeme_objet.
On affecte à a variable masse la vaeur de 0 et également à la variable prix. On affecte à liste_objetsune liste vide. On fait une boucle où i va prendre la taille(longeur) de la boucle. On fait une boucle if, donc si la masse plus la masse de l'objet dans la liste systeme_objets est inférieur ou égale à la valeur de masse_max_sac; alors on affecte à masse, masseplus la masse de l'objet dans la liste systeme_objets. Puis on affecte à prix, prix plus la valeur de l'objet dans la liste systeme_objets. On ajoute à la fin de la liste liste_objets le nom de l'objet de place i dans la liste. Puis on renvoi dans la console la liste, liste_objet, a masse plus kg le prix plus euros. Enfin on affiche dans la console l'exécution de la fonction sac_a_dos pour une masse_max_sac de 30 et comme liste systeme_objet.