Courses de rentrée

On travaille dans cet exercice sur la classe Article qui permet de décrire un article (trousse, gomme...) à acheter.

classDiagram
class Article{
       description : str
       prix : float
       reduction : int
       prix_apres_reduction() float
}

Un article est caractérisé par sa description de type str, son prix de type float, et sa remise de type int, exprimée en pourcentage.

Cette classe dispose de la méthode article.prix_apres_reduction qui renvoie la valeur du prix auquel on a appliqué une réduction, le prix final étant arrondi au centime.

round ?

La fonction intégrée round permet d'arrondir un nombre donné. La fonction prend en paramètres un nombre à virgule ainsi qu'un nombre de décimales et renvoie la valeur arrondie à ce nombre de décimales près.

🐍 Console Python
>>> round(65.1745, 2)
65.17
>>> round(65.1795, 1)
65.2

Le code de cette classe est donné ci-dessous :

🐍 Script Python
class Article:
    def __init__(self, description, prix):
        """ Création d'un nouvel article """
        self.description = description
        self.prix = prix
        self.remise = 0

    def prix_apres_reduction(self) -> float:
        """ Renvoie le prix de l'article après réduction """
        return round(self.prix*(1-self.remise/100), 2)
Question 1

En utilisant cette classe Article, créer un tableau courses contenant les articles suivants dont on donne les valeurs des attributs description et prix :

  • un "cartable" à 45 €
  • une "boite de crayons de couleurs" à 9,95 €
  • une "trousse" à 12 €

Descriptions

Attention à bien renseigner pour chaque article la description et le prix donnés ci-dessus.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135[4tf)2r,3sao iugm1]Ppnlh.e=cyv9A(S/bd050M0B0e0m0p0y0l0o0D0y0m0l0l0C010e0p0w010406050l0q0s0s0m0i0E040J0n0y0q0%0n0x050K0.0:0=0@0,0w041017051a0K1a1c170,0M0p0F0V0X0Z0#0z0p0r0z0y1q0z0e0*050Q0L0y0B1l0Y0!011p1r1t1r0e1z1B1x0e0L0n0M0@1y0i180e0z0V0`0l0w0m0x0#0h011D1n010f0S0B0x0m0s0B1x1#1%1,1F1/1B1=1@0*0a0o0v0i0n0w0n0l0p0}0x0o0O1Z0i0i0B0D2c101`0x180K1X2p0e1V1U1W0M1|0#1t0x1;291x1i1k0W1E2z0p2B0x1R1j1x0w2i182n2p2T0-1$2d2H1-2M0i0;0y0*0t2m2X0+2W1{2Z1F2#2%0*0h2+1%2-2n2y012=0m2(040k2_2o0,2|2:0#2 310d342p2Q0B2p2F2s0M2w2}0D1R1^183i1b2R2.2o3d053n0O2S2X2}0x0*0D0=1M0B3d0o3u2}0n0*0C3J3L382~0*0H0i0%0W3I112,3R1m1F0)040I3w373%0#0l1*04013F3W0m1A1^3,3B3S3)0j3Q3-2I010s0p0*0d0b3|2/3.013)0g3d363}4c3D040D0i0m0E0~0l414i433N043P3!2`3K422!3U3W0p3Y4a2Y4c3)3+4y3v4B1F3:0*011Q2b1C2f4m4o4q2e1C3n0q1B0q0i0l014H2}3 4s4b430s0f0*0G0A0G494M3A4;1-4e4g3$434k2t0n0q0Z3Z2T4A4t1-4v4x5b534C043V3X1B4-3~0*4L2V4O3/3;0$26580l3{4}5i3(0*404}5c4 1F452)2^5B5t4d0*4f4}4h5I393E574*0B4r5G5C0#5f4:4I433)0c5o4j3E3G3_5n5N5d5D045F5h5O4k4X4p0x5!5s5^0#4/5#5}0*565y5a3#5O3)0u520K3y3g193t0K3r2q3k102t2s1Q1S2s5=6k6n1j2-6n0P0R0T04.
Question 2

Créer une fonction somme_articles qui prend en paramètre une liste d'articles et renvoie le prix total des courses, arrondi au centime près.

🐍 Console Python
>>> somme_articles(courses)
66.95
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135tf4)+2r3,sao iug0xm1Ppnlh.e=cy:v(wS/b_dk050O0C0c0m0p0z0l0o0E0z0m0l0l0D010c0p0x010406050l0q0u0u0m0i0F040K0n0z0q0*0n0y050L0;0?0^0`0/0x04131a051d0L1d1f1a0/0O0p0H0Y0!0$0(0A0p0r0A0z1t0A0c0-050T0M0z0C1o0#0%011s1u1w1u0c1C1E1A0c0M0n0O0`1B0i1b0c0A0Y0}0l0x0m0y0(0h011G1q010d0V0C0y0m0u0C1A1(1*1/1I1=1E1^1`0-0a0o0w0i0n0x0n0l0p100y0o0R1$0i0i0C0E2f131}0y1b0L1!2s0c1Y1X1Z0O1 0(1w0y1@2c1A1l1n0Z1H2C0p2E0y1U1m1A0x2l1b2q2s2W0:1)2g2K1:2P0i0@0z0-0v2p2!0.2Z1~2$1I2(2*0-0h2.1*2:2q2B012^0m2+040j2|2r0/2 2?0(32340e372~2!303d0-0b3g1c2U132I2v0O2z300E1U1{1b3r1e3p2Y142/053w0R2V3i3b010P0-0R0d3n3a1p1I0J0-0o3R3K3T3c0d0-0l0n0?0C0N0^0*0Z0C0l3Y2=3!010,040I3=2#3@0y0-1w0l0c3+0R0N3w0q0i0l3:3|303_0f0G3g060o4j3X3S2L313%3)1`3g4l3Z4n0n0-0D4s2;3}4n0u0p0-0s4h4k4t3?4n3N040d0n0i4z4m2%0-3-0p3/4R4u1:0n3V042N4Y4K4T0441430N4547494b3E2}4A4d0-4g4@384I4I4_3L3 043(3*4)4B4!0-0g4y4}044J582@4U0i3.1E4c3L4w040B5m3~0-2T0p0t4H4k513@4M2l0c48125d5f3j0M0-290q0y0O5r4n3_3{5d5z4n53554r5T4S1I3_0k57304D2`5P1:4e4h133H0C2s2T5=3q1m3s2v2x2t1T1V2v0m1D5^0L3r0/650S0U0W04.
Question 3

Le magasin propose 10% de remise sur les cartables et \(20\)% sur les trousses. Par contre, il n'y a pas de remise sur les boites de crayons de couleur.

Modifier la valeur des remises sur les articles concernés.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013tf2rsao iug0m1Ppnlh.e=cyvS/bd050D0v0b0g0j0s0f0i0x0s0g0f0f0w010b0j0q010406050f0k0n0n0g0e0y040A0h0s0k0U0h0r050B0#0%0)0+0Z0q040@0~05110B11130~0Z0D0j0z0M0O0Q0S0t0j0l0t0s1h0t0b0X050H0C0s0v1c0P0R011g1i1k1i0b1q1s1o0b0C0h0D0+1p0e0 0b0t0M0.0f0q0g0r0S0d011u1e010c0J0v0r0g0n0v1o1S1U1Z1w1$1s1)1+0X0a0i0p0e0h0q0h0f0j0;0r0i0F1Q0e0e0v0x230@1.0r0 0B1O2g0b1M1L1N0D1:0S1k0r1(201o191b0N1v2q0j2s0r1I1a1o0q290 2e2g2K0!1T242y1!2D0e0(0s0X0o2d2O0Y2N1/2Q1w2S2U0X0d2Y1U2g2H0v2g2w2j0D2n2p010x1I1,0 2?122I2#2f2-342|0F2J2O2`0r0X0x0)1D0v35392$1d1w0h0X0u3i333b0X290n0j0f3h0^2Z0i3r2%0S3n040w3i3B2e2`3v2W0m3i0Z3K3D013c042k0h0k0Q3y2M3R3l3E3o3q3$2z3T3t0v3v3x3I3C3%013F3H3z2.3J3a3S3M040d3O3{2f0Z0B372;10320B302h2^0@2k2j1H1J2j0g1r494c1a2!4c0G0I0K04.
Question 4

Ces remises ne s'appliquent que si le montant des courses est supérieur à \(60\) €.

Créer une fonction somme_articles_reduction qui prend en paramètre une liste d'articles et renvoie le total des courses, réduction déduite.

On pourra utiliser la fonction somme_articles, déjà chargée en mémoire.

La somme sera arrondie au centime près.

🐍 Console Python
>>> somme_articles_reduction(courses)
60.05

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135tf4)+2r3,sao iug0x8m1P6pnl7h.e=cy:v9(w;S/b_dk050T0F0c0m0p0B0l0o0H0B0m0l0l0G010c0p0z010406050l0q0v0v0m0i0I040P0n0B0q0/0n0A050Q0_0{0}0 0@0z04181f051i0Q1i1k1f0@0T0p0K0%0)0+0-0D0p0r0D0B1y0D0c0=050Y0R0B0F1t0*0,011x1z1B1z0c1H1J1F0c0R0n0T0 1G0i1g0c0D0%120l0z0m0A0-0h011L1v010d0!0F0A0m0v0F1F1-1/1@1N1`1J1}1 0=0a0o0x0i0n0z0n0l0p150A0o0W1+0i0i0F0H2k18220A1g0Q1)2x0c1%1$1(0T240-1B0A1|2h1F1q1s0(1M2H0p2J0A1Z1r1F0z2q1g2v2x2#0^1.2l2P1^2U0i0|0B0=0w2u2)0?2(232+1N2-2/0=0h2?1/2^2v2G012}0m2:040j312w0@342{0-37390e3c332)353i0=0b3l3e3n3g360n2.380=0y3s2_2*1u2|3x2~040C3C3f3F3h3H3z040u3L3u3N3w3y390L3l1h2Z182N2A0T2E350H1Z201g3(1j3$2%192@053-0W2!3U2Q010U0=0W0d3!3M3 0N0=0o453~2,0d0=0l0n0{0F0S0}0/0(0F0l0S2q0T0q2s0p164b2`3V0;040M4x3E3 0A0=1B0l0c4j0W0S3-0q0i0l4o4D354A0f0J3s0o4Z4a462,4f4h1 3l4#4c1N0n0=0G4+3D3o4(4i4k0i4m1J0l4T3v4A4C3^324?3v4G044I4K0S4M4O4Q4S532w554z0=0f4Y4!5i3 41040p445g044,4y4F4^4*5u5w4E1^4/04020r0c0O4=4$1N0v0p3A0s4 5j044X5u064!5Y5C4@044g4i5L4-0-5F4;5B5o1^5O0=5R5W5Z5n5M0-5q0d3x5)5x4%044l0p4n5 5D4.485r175.5`364H0p4J4L4j5d4R4~5u5/1N4A5V2#5X5^5Z6o3h5z0F66355F0g5-2#5!560=63656n6d5F0E5S5y042Y0p0t4k2Y4o4q0F4s4u4w6L5*01515l5@6u6w400=2q0c4P6b6F6.0A0R6:0n0q0A0T6P1^51712|6y740-4A0k6A3v5;04306%606p5k5m4Z6.5q0F0#6z7g67780=6r2@6t5^7m6:0X6?7b3V575%5A6s183{0F2x6W2x3;2y3*182B2A1Y1!2A0m1I7L3%1r2^0Q0W0Y0!0l04.