Advertisement
Guest User

poo cachan

a guest
Dec 13th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. # -*- coding: cp1252 -*-
  2. from math import * #sqrt
  3. from time import *
  4. from random import *
  5.  
  6. class cSac():
  7. def __init__(self,contenance,valeur):
  8. #attribut de l'objet : nom
  9. self.contenance = contenance
  10. self.valeur = valeur
  11. self.malisteobjets = []
  12.  
  13.  
  14. def afficher(self):
  15.  
  16. print 10000 - self.contenance
  17. print 5000 - self.valeur
  18. for j in sac.malisteobjets:#permet d'afficher les objets contenus dans le sac
  19. print j.nom
  20.  
  21.  
  22.  
  23.  
  24. class cComestible():
  25. def __init__(self,n,p,prix):
  26. self.nom = n #attribut de l'objet : nom
  27. self.poids = p
  28. self.prix = prix
  29. self.rapport= float(self.prix) / self.poids
  30.  
  31.  
  32. def afficher(self):
  33. print self.nom
  34. print self.poids
  35. print self.prix
  36.  
  37. def __repr__(self):
  38. return self.nom
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. def TrierListe(maListeObjets): #permet de creer une liste maListeRapport triee par ordre decroissant
  46. maListeRapport = []
  47. for objet in maListeObjets:
  48. maListeRapport.append(objet.rapport)
  49. maListeRapport.sort(reverse = True)
  50. print maListeRapport
  51. return maListeRapport
  52.  
  53.  
  54.  
  55.  
  56. maListe1 = []
  57.  
  58. sac = cSac(10000,5000) #instanciation du sac de contenance 10 000g et dont le contenu ne doit pas depasser 5000 euros
  59. sac.afficher()
  60.  
  61. pain = cComestible("pain",4000,5) #instanciation d'un objet pain de classe nourriture avec 100kcal, 4kg 5 dollars --1st item--
  62. pain.afficher()
  63.  
  64.  
  65. eau = cComestible("cristaline",3000,3) #instanciation d'un objet eau de classe eau avec 0cal, 3kg 3 dollars --3rd item--
  66. eau.afficher()
  67.  
  68. whisky = cComestible("JackDaniel",8000,10) #instanciation d'un objet de classe alcool de 500cal, 8kg, 10 dollars --2nd item--
  69. whisky.afficher()
  70.  
  71. cigarette = cComestible("Marlboro",2000,3) #instanciation d'un objet de classe cigarette de 0cal, 2kg, 3 dollars --5th item--
  72. cigarette.afficher()
  73.  
  74. riz = cComestible("riz",5000,2) #instanciation d'un objet riz de classe nourriture avec 300kcal, 5kg 2 dollars --4th item--
  75. riz.afficher()
  76.  
  77. maListeObjets = [pain, eau, whisky, cigarette, riz]
  78. maListeRapport = TrierListe(maListeObjets)
  79.  
  80.  
  81. maListeObjets.sort(key = lambda elt : float(elt.rapport), reverse = True)#permet de trier la liste afin d'obtenir les items classés selon leur rapport prix/poids par ordre decroissant
  82.  
  83. #print maListeObjets
  84. for i in maListeObjets: #permet d'afficher les objets tries
  85. print i
  86.  
  87. for item in maListeObjets:
  88. while((sac.contenance >= item.poids) and (item in maListeObjets)):
  89. sac.malisteobjets.append(maListeObjets.pop(maListeObjets.index(item)))
  90. sac.contenance = float(sac.contenance) - item.poids
  91. sac.valeur = float(sac.valeur) - item.prix
  92.  
  93. sac.afficher()
  94.  
  95. # ALGORITHME GENETIQUE !!!!!!!!!!!!!
  96.  
  97. def genererSac(nbSacs,contenance,valeur):
  98. listesac = []
  99. for k in range(nbSacs):
  100. listesac[k] = cSac(contenance,valeur)
  101. for j in range(nbSacs):
  102. for l in listesac[j].malisteobjets: #permet d'afficher les objets contenus dans le sac
  103. print l.nom
  104. return listesac
  105.  
  106.  
  107. genererSac(100,10000,5000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement