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

.128013s3obcdufvg/ly nAapS.r1me,(P2=4ti9][5h)050g0y0F0r0G0m0b0o0f0m0r0b0b0D010F0G0s010406050b0h0x0x0r0v0n040t0d0m0h0%0d0p050l0.0:0=0@0,0s041017051a0l1a1c170,0g0G0j0V0X0Z0#0L0G0k0L0m1q0L0F0*050Q0e0m0y1l0Y0!011p1r1t1r0F1z1B1x0F0e0d0g0@1y0v180F0L0V0`0b0s0r0p0#0C011D1n010i0S0y0p0r0x0y1x1#1%1,1F1/1B1=1@0*0a0o0B0v0d0s0d0b0G0}0p0o0O1Z0v0v0y0f2c101`0p180l1X2p0F1V1U1W0g1|0#1t0p1;291x1i1k0W1E2z0G2B0p1R1j1x0s2i182n2p2T0-1$2d2H1-2M0v0;0m0*0w2m2X0+2W1{2Z1F2#2%0*0C2+1%2-2n2y012=0r2(040c2_2o0,2|2:0#2 310E342p2Q0y2p2F2s0g2w2}0f1R1^183i1b2R2.2o3d053n0O2S2X2}0p0*0f0=1M0y3d0o3u2}0d0*0D3J3L382~0*0q0v0%0W3I112,3R1m1F0)040A3w373%0#0b1*04013F3W0r1A1^3,3B3S3)0z3Q3-2I010x0G0*0E0K3|2/3.013)0M3d363}4c3D040f0v0r0n0~0b414i433N043P3!2`3K422!3U3W0G3Y4a2Y4c3)3+4y3v4B1F3:0*011Q2b1C2f4m4o4q2e1C3n0h1B0h0v0b014H2}3 4s4b430x0i0*0H0u0H494M3A4;1-4e4g3$434k2t0d0h0Z3Z2T4A4t1-4v4x5b534C043V3X1B4-3~0*4L2V4O3/3;0$26580b3{4}5i3(0*404}5c4 1F452)2^5B5t4d0*4f4}4h5I393E574*0y4r5G5C0#5f4:4I433)0J5o4j3E3G3_5n5N5d5D045F5h5O4k4X4p0p5!5s5^0#4/5#5}0*565y5a3#5O3)0I520l3y3g193t0l3r2q3k102t2s1Q1S2s5=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

.128013s3o_bcdufvg/0ly napS.r1me,(P2=4:+twki5hx)050h0z0I0s0L0o0b0q0g0o0s0b0b0E010I0L0t010406050b0i0y0y0s0w0p040u0d0o0i0*0d0r050m0;0?0^0`0/0t04131a051d0m1d1f1a0/0h0L0k0Y0!0$0(0N0L0l0N0o1t0N0I0-050T0f0o0z1o0#0%011s1u1w1u0I1C1E1A0I0f0d0h0`1B0w1b0I0N0Y0}0b0t0s0r0(0D011G1q010j0V0z0r0s0y0z1A1(1*1/1I1=1E1^1`0-0a0q0C0w0d0t0d0b0L100r0q0R1$0w0w0z0g2f131}0r1b0m1!2s0I1Y1X1Z0h1 0(1w0r1@2c1A1l1n0Z1H2C0L2E0r1U1m1A0t2l1b2q2s2W0:1)2g2K1:2P0w0@0o0-0x2p2!0.2Z1~2$1I2(2*0-0D2.1*2:2q2B012^0s2+040c2|2r0/2 2?0(32340F372~2!303d0-0M3g1c2U132I2v0h2z300g1U1{1b3r1e3p2Y142/053w0R2V3i3b010K0-0R0j3n3a1p1I0J0-0q3R3K3T3c0j0-0b0d0?0z0e0^0*0Z0z0b3Y2=3!010,040B3=2#3@0r0-1w0b0I3+0R0e3w0i0w0b3:3|303_0P0G3g060q4j3X3S2L313%3)1`3g4l3Z4n0d0-0E4s2;3}4n0y0L0-0n4h4k4t3?4n3N040j0d0w4z4m2%0-3-0L3/4R4u1:0d3V042N4Y4K4T0441430e4547494b3E2}4A4d0-4g4@384I4I4_3L3 043(3*4)4B4!0-0H4y4}044J582@4U0w3.1E4c3L4w040v5m3~0-2T0L0O4H4k513@4M2l0I48125d5f3j0f0-290i0r0h5r4n3_3{5d5z4n53554r5T4S1I3_0A57304D2`5P1:4e4h133H0z2s2T5=3q1m3s2v2x2t1T1V2v0s1D5^0m3r0/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

.128013sobcdufvg/0ly napS.r1meP2=tih050f0x0B0q0C0m0b0o0e0m0q0b0b0A010B0C0r010406050b0g0w0w0q0u0n040s0c0m0g0U0c0p050k0#0%0)0+0Z0r040@0~05110k11130~0Z0f0C0i0M0O0Q0S0D0C0j0D0m1h0D0B0X050H0d0m0x1c0P0R011g1i1k1i0B1q1s1o0B0d0c0f0+1p0u0 0B0D0M0.0b0r0q0p0S0z011u1e010h0J0x0p0q0w0x1o1S1U1Z1w1$1s1)1+0X0a0o0y0u0c0r0c0b0C0;0p0o0F1Q0u0u0x0e230@1.0p0 0k1O2g0B1M1L1N0f1:0S1k0p1(201o191b0N1v2q0C2s0p1I1a1o0r290 2e2g2K0!1T242y1!2D0u0(0m0X0v2d2O0Y2N1/2Q1w2S2U0X0z2Y1U2g2H0x2g2w2j0f2n2p010e1I1,0 2?122I2#2f2-342|0F2J2O2`0p0X0e0)1D0x35392$1d1w0c0X0t3i333b0X290w0C0b3h0^2Z0o3r2%0S3n040A3i3B2e2`3v2W0l3i0Z3K3D013c042k0c0g0Q3y2M3R3l3E3o3q3$2z3T3t0x3v3x3I3C3%013F3H3z2.3J3a3S3M040z3O3{2f0Z0k372;10320k302h2^0@2k2j1H1J2j0q1r494c1a2!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

.128013s3o_8;bcdufvg/0ly n7apS.r1me,(P2=4:+twki95hx)6050j0C0L0v0O0q0b0s0i0q0v0b0b0H010L0O0w010406050b0k0B0B0v0z0r040x0d0q0k0/0d0t050o0_0{0}0 0@0w04181f051i0o1i1k1f0@0j0O0m0%0)0+0-0R0O0n0R0q1y0R0L0=050Y0h0q0C1t0*0,011x1z1B1z0L1H1J1F0L0h0d0j0 1G0z1g0L0R0%120b0w0v0t0-0G011L1v010l0!0C0t0v0B0C1F1-1/1@1N1`1J1}1 0=0a0s0F0z0d0w0d0b0O150t0s0W1+0z0z0C0i2k18220t1g0o1)2x0L1%1$1(0j240-1B0t1|2h1F1q1s0(1M2H0O2J0t1Z1r1F0w2q1g2v2x2#0^1.2l2P1^2U0z0|0q0=0A2u2)0?2(232+1N2-2/0=0G2?1/2^2v2G012}0v2:040c312w0@342{0-37390I3c332)353i0=0Q3l3e3n3g360d2.380=0U3s2_2*1u2|3x2~040u3C3f3F3h3H3z040f3L3u3N3w3y390P3l1h2Z182N2A0j2E350i1Z201g3(1j3$2%192@053-0W2!3U2Q010N0=0W0l3!3M3 0M0=0s453~2,0l0=0b0d0{0C0e0}0/0(0C0b0e2q0j0k2s0O164b2`3V0;040E4x3E3 0t0=1B0b0L4j0W0e3-0k0z0b4o4D354A0T0J3s0s4Z4a462,4f4h1 3l4#4c1N0d0=0H4+3D3o4(4i4k0z4m1J0b4T3v4A4C3^324?3v4G044I4K0e4M4O4Q4S532w554z0=0T4Y4!5i3 41040O445g044,4y4F4^4*5u5w4E1^4/04020n0L0g4=4$1N0B0O3A0p4 5j044X5u064!5Y5C4@044g4i5L4-0-5F4;5B5o1^5O0=5R5W5Z5n5M0-5q0l3x5)5x4%044l0O4n5 5D4.485r175.5`364H0O4J4L4j5d4R4~5u5/1N4A5V2#5X5^5Z6o3h5z0C66355F0K5-2#5!560=63656n6d5F0y5S5y042Y0O0S4k2Y4o4q0C4s4u4w6L5*01515l5@6u6w400=2q0L4P6b6F6.0t0h6:0d0k0t0j6P1^51712|6y740-4A0D6A3v5;04306%606p5k5m4Z6.5q0C0#6z7g67780=6r2@6t5^7m6:0X6?7b3V575%5A6s183{0C2x6W2x3;2y3*182B2A1Y1!2A0v1I7L3%1r2^0o0W0Y0!0b04.