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. 

Créez votre site web gratuitement ! Ce site internet a été réalisé avec Webnode. Créez le votre gratuitement aujourd'hui ! Commencer