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

.128013nimgyP2o, 5]ual4t/sbr[vce.3)Afh1S=9dp(050K0z0r0o0c0p0t0k0y0p0o0t0t0I010r0c0L010406050t0n0d0d0o0v0f040H0i0p0n0%0i0b050s0.0:0=0@0,0L041017051a0s1a1c170,0K0c0x0V0X0Z0#0F0c0e0F0p1q0F0r0*050Q0u0p0z1l0Y0!011p1r1t1r0r1z1B1x0r0u0i0K0@1y0v180r0F0V0`0t0L0o0b0#0h011D1n010E0S0z0b0o0d0z1x1#1%1,1F1/1B1=1@0*0a0k0g0v0i0L0i0t0c0}0b0k0O1Z0v0v0z0y2c101`0b180s1X2p0r1V1U1W0K1|0#1t0b1;291x1i1k0W1E2z0c2B0b1R1j1x0L2i182n2p2T0-1$2d2H1-2M0v0;0p0*0G2m2X0+2W1{2Z1F2#2%0*0h2+1%2-2n2y012=0o2(040B2_2o0,2|2:0#2 310q342p2Q0z2p2F2s0K2w2}0y1R1^183i1b2R2.2o3d053n0O2S2X2}0b0*0y0=1M0z3d0k3u2}0i0*0I3J3L382~0*0D0v0%0W3I112,3R1m1F0)040M3w373%0#0t1*04013F3W0o1A1^3,3B3S3)0j3Q3-2I010d0c0*0q0l3|2/3.013)0C3d363}4c3D040y0v0o0f0~0t414i433N043P3!2`3K422!3U3W0c3Y4a2Y4c3)3+4y3v4B1F3:0*011Q2b1C2f4m4o4q2e1C3n0n1B0n0v0t014H2}3 4s4b430d0E0*0J0A0J494M3A4;1-4e4g3$434k2t0i0n0Z3Z2T4A4t1-4v4x5b534C043V3X1B4-3~0*4L2V4O3/3;0$26580t3{4}5i3(0*404}5c4 1F452)2^5B5t4d0*4f4}4h5I393E574*0z4r5G5C0#5f4:4I433)0w5o4j3E3G3_5n5N5d5D045F5h5O4k4X4p0b5!5s5^0#4/5#5}0*565y5a3#5O3)0m520s3y3g193t0s3r2q3k102t2s1Q1S2s5=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

.128013nximwgyk02Po, 5+ual4t/sbrvce.3)fh:1S=_dp(050N0C0v0s0d0t0x0o0B0t0s0x0x0L010v0d0O010406050x0r0e0e0s0z0h040K0m0t0r0*0m0b050w0;0?0^0`0/0O04131a051d0w1d1f1a0/0N0d0A0Y0!0$0(0H0d0g0H0t1t0H0v0-050T0y0t0C1o0#0%011s1u1w1u0v1C1E1A0v0y0m0N0`1B0z1b0v0H0Y0}0x0O0s0b0(0k011G1q010G0V0C0b0s0e0C1A1(1*1/1I1=1E1^1`0-0a0o0l0z0m0O0m0x0d100b0o0R1$0z0z0C0B2f131}0b1b0w1!2s0v1Y1X1Z0N1 0(1w0b1@2c1A1l1n0Z1H2C0d2E0b1U1m1A0O2l1b2q2s2W0:1)2g2K1:2P0z0@0t0-0J2p2!0.2Z1~2$1I2(2*0-0k2.1*2:2q2B012^0s2+040E2|2r0/2 2?0(32340u372~2!303d0-0p3g1c2U132I2v0N2z300B1U1{1b3r1e3p2Y142/053w0R2V3i3b010i0-0R0G3n3a1p1I0f0-0o3R3K3T3c0G0-0x0m0?0C0M0^0*0Z0C0x3Y2=3!010,040P3=2#3@0b0-1w0x0v3+0R0M3w0r0z0x3:3|303_0F0I3g060o4j3X3S2L313%3)1`3g4l3Z4n0m0-0L4s2;3}4n0e0d0-0j4h4k4t3?4n3N040G0m0z4z4m2%0-3-0d3/4R4u1:0m3V042N4Y4K4T0441430M4547494b3E2}4A4d0-4g4@384I4I4_3L3 043(3*4)4B4!0-0q4y4}044J582@4U0z3.1E4c3L4w040D5m3~0-2T0d0c4H4k513@4M2l0v48125d5f3j0y0-290r0b0N5r4n3_3{5d5z4n53554r5T4S1I3_0n57304D2`5P1:4e4h133H0C2s2T5=3q1m3s2v2x2t1T1V2v0s1D5^0w3r0/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

.128013nimgy0P2o ualtb/srvce.fh1S=dp050C0v0o0m0c0n0r0k0u0n0m0r0r0B010o0c0D010406050r0l0d0d0m0s0f040A0j0n0l0U0j0b050q0#0%0)0+0Z0D040@0~05110q11130~0Z0C0c0t0M0O0Q0S0y0c0e0y0n1h0y0o0X050H0p0n0v1c0P0R011g1i1k1i0o1q1s1o0o0p0j0C0+1p0s0 0o0y0M0.0r0D0m0b0S0i011u1e010x0J0v0b0m0d0v1o1S1U1Z1w1$1s1)1+0X0a0k0h0s0j0D0j0r0c0;0b0k0F1Q0s0s0v0u230@1.0b0 0q1O2g0o1M1L1N0C1:0S1k0b1(201o191b0N1v2q0c2s0b1I1a1o0D290 2e2g2K0!1T242y1!2D0s0(0n0X0z2d2O0Y2N1/2Q1w2S2U0X0i2Y1U2g2H0v2g2w2j0C2n2p010u1I1,0 2?122I2#2f2-342|0F2J2O2`0b0X0u0)1D0v35392$1d1w0j0X0w3i333b0X290d0c0r3h0^2Z0k3r2%0S3n040B3i3B2e2`3v2W0g3i0Z3K3D013c042k0j0l0Q3y2M3R3l3E3o3q3$2z3T3t0v3v3x3I3C3%013F3H3z2.3J3a3S3M040i3O3{2f0Z0q372;10320q302h2^0@2k2j1H1J2j0m1r494c1a2!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

.128013nximwgyk02P;o, 56+ual84t/sbrvce.3)fh:1S=97_dp(050S0F0y0u0d0v0A0p0E0v0u0A0A0O010y0d0T010406050A0t0e0e0u0C0h040N0n0v0t0/0n0b050z0_0{0}0 0@0T04181f051i0z1i1k1f0@0S0d0D0%0)0+0-0K0d0g0K0v1y0K0y0=050Y0B0v0F1t0*0,011x1z1B1z0y1H1J1F0y0B0n0S0 1G0C1g0y0K0%120A0T0u0b0-0k011L1v010J0!0F0b0u0e0F1F1-1/1@1N1`1J1}1 0=0a0p0l0C0n0T0n0A0d150b0p0W1+0C0C0F0E2k18220b1g0z1)2x0y1%1$1(0S240-1B0b1|2h1F1q1s0(1M2H0d2J0b1Z1r1F0T2q1g2v2x2#0^1.2l2P1^2U0C0|0v0=0M2u2)0?2(232+1N2-2/0=0k2?1/2^2v2G012}0u2:040H312w0@342{0-37390x3c332)353i0=0q3l3e3n3g360n2.380=0r3s2_2*1u2|3x2~040Q3C3f3F3h3H3z040w3L3u3N3w3y390P3l1h2Z182N2A0S2E350E1Z201g3(1j3$2%192@053-0W2!3U2Q010i0=0W0J3!3M3 0f0=0p453~2,0J0=0A0n0{0F0R0}0/0(0F0A0R2q0S0t2s0d164b2`3V0;040U4x3E3 0b0=1B0A0y4j0W0R3-0t0C0A4o4D354A0I0L3s0p4Z4a462,4f4h1 3l4#4c1N0n0=0O4+3D3o4(4i4k0C4m1J0A4T3v4A4C3^324?3v4G044I4K0R4M4O4Q4S532w554z0=0I4Y4!5i3 41040d445g044,4y4F4^4*5u5w4E1^4/04020g0y0m4=4$1N0e0d3A0j4 5j044X5u064!5Y5C4@044g4i5L4-0-5F4;5B5o1^5O0=5R5W5Z5n5M0-5q0J3x5)5x4%044l0d4n5 5D4.485r175.5`364H0d4J4L4j5d4R4~5u5/1N4A5V2#5X5^5Z6o3h5z0F66355F0s5-2#5!560=63656n6d5F0G5S5y042Y0d0c4k2Y4o4q0F4s4u4w6L5*01515l5@6u6w400=2q0y4P6b6F6.0b0B6:0n0t0b0S6P1^51712|6y740-4A0o6A3v5;04306%606p5k5m4Z6.5q0F0#6z7g67780=6r2@6t5^7m6:0X6?7b3V575%5A6s183{0F2x6W2x3;2y3*182B2A1Y1!2A0u1I7L3%1r2^0z0W0Y0!0A04.