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

.128013,n (]e953m=p)rh[uoiscb/.S1vtAdgay24Pfl050E0g0C0G0t0M0u0d0v0M0G0u0u0l010C0t0m010406050u0r0k0k0G0o0H040z0s0M0r0%0s0c050x0.0:0=0@0,0m041017051a0x1a1c170,0E0t0B0V0X0Z0#0p0t0F0p0M1q0p0C0*050Q0w0M0g1l0Y0!011p1r1t1r0C1z1B1x0C0w0s0E0@1y0o180C0p0V0`0u0m0G0c0#0I011D1n010L0S0g0c0G0k0g1x1#1%1,1F1/1B1=1@0*0a0d0K0o0s0m0s0u0t0}0c0d0O1Z0o0o0g0v2c101`0c180x1X2p0C1V1U1W0E1|0#1t0c1;291x1i1k0W1E2z0t2B0c1R1j1x0m2i182n2p2T0-1$2d2H1-2M0o0;0M0*0A2m2X0+2W1{2Z1F2#2%0*0I2+1%2-2n2y012=0G2(040j2_2o0,2|2:0#2 310J342p2Q0g2p2F2s0E2w2}0v1R1^183i1b2R2.2o3d053n0O2S2X2}0c0*0v0=1M0g3d0d3u2}0s0*0l3J3L382~0*0D0o0%0W3I112,3R1m1F0)040e3w373%0#0u1*04013F3W0G1A1^3,3B3S3)0b3Q3-2I010k0t0*0J0i3|2/3.013)0n3d363}4c3D040v0o0G0H0~0u414i433N043P3!2`3K422!3U3W0t3Y4a2Y4c3)3+4y3v4B1F3:0*011Q2b1C2f4m4o4q2e1C3n0r1B0r0o0u014H2}3 4s4b430k0L0*0h0y0h494M3A4;1-4e4g3$434k2t0s0r0Z3Z2T4A4t1-4v4x5b534C043V3X1B4-3~0*4L2V4O3/3;0$26580u3{4}5i3(0*404}5c4 1F452)2^5B5t4d0*4f4}4h5I393E574*0g4r5G5C0#5f4:4I433)0q5o4j3E3G3_5n5N5d5D045F5h5O4k4X4p0c5!5s5^0#4/5#5}0*565y5a3#5O3)0f520x3y3g193t0x3r2q3k102t2s1Q1S2s5=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

.128013,n w5e(3m=0p)rhkuoiscb/.S1vt_dg:xay24P+fl050E0g0C0I0t0P0u0d0v0P0I0u0u0k010C0t0m010406050u0r0j0j0I0o0J040z0s0P0r0*0s0c050x0;0?0^0`0/0m04131a051d0x1d1f1a0/0E0t0B0Y0!0$0(0p0t0F0p0P1t0p0C0-050T0w0P0g1o0#0%011s1u1w1u0C1C1E1A0C0w0s0E0`1B0o1b0C0p0Y0}0u0m0I0c0(0K011G1q010O0V0g0c0I0j0g1A1(1*1/1I1=1E1^1`0-0a0d0M0o0s0m0s0u0t100c0d0R1$0o0o0g0v2f131}0c1b0x1!2s0C1Y1X1Z0E1 0(1w0c1@2c1A1l1n0Z1H2C0t2E0c1U1m1A0m2l1b2q2s2W0:1)2g2K1:2P0o0@0P0-0A2p2!0.2Z1~2$1I2(2*0-0K2.1*2:2q2B012^0I2+040i2|2r0/2 2?0(32340L372~2!303d0-0f3g1c2U132I2v0E2z300v1U1{1b3r1e3p2Y142/053w0R2V3i3b010q0-0R0O3n3a1p1I0e0-0d3R3K3T3c0O0-0u0s0?0g0D0^0*0Z0g0u3Y2=3!010,040h3=2#3@0c0-1w0u0C3+0R0D3w0r0o0u3:3|303_0n0G3g060d4j3X3S2L313%3)1`3g4l3Z4n0s0-0k4s2;3}4n0j0t0-0l4h4k4t3?4n3N040O0s0o4z4m2%0-3-0t3/4R4u1:0s3V042N4Y4K4T0441430D4547494b3E2}4A4d0-4g4@384I4I4_3L3 043(3*4)4B4!0-0N4y4}044J582@4U0o3.1E4c3L4w040y5m3~0-2T0t0H4H4k513@4M2l0C48125d5f3j0w0-290r0c0E5r4n3_3{5d5z4n53554r5T4S1I3_0b57304D2`5P1:4e4h133H0g2s2T5=3q1m3s2v2x2t1T1V2v0I1D5^0x3r0/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

.128013n em=0prhuoiscb/.S1vtdgay2Pfl050w0d0v0y0m0D0n0c0o0D0y0n0n0f010v0m0h010406050n0k0e0e0y0i0z040s0l0D0k0U0l0b050q0#0%0)0+0Z0h040@0~05110q11130~0Z0w0m0u0M0O0Q0S0j0m0x0j0D1h0j0v0X050H0p0D0d1c0P0R011g1i1k1i0v1q1s1o0v0p0l0w0+1p0i0 0v0j0M0.0n0h0y0b0S0A011u1e010C0J0d0b0y0e0d1o1S1U1Z1w1$1s1)1+0X0a0c0B0i0l0h0l0n0m0;0b0c0F1Q0i0i0d0o230@1.0b0 0q1O2g0v1M1L1N0w1:0S1k0b1(201o191b0N1v2q0m2s0b1I1a1o0h290 2e2g2K0!1T242y1!2D0i0(0D0X0t2d2O0Y2N1/2Q1w2S2U0X0A2Y1U2g2H0d2g2w2j0w2n2p010o1I1,0 2?122I2#2f2-342|0F2J2O2`0b0X0o0)1D0d35392$1d1w0l0X0r3i333b0X290e0m0n3h0^2Z0c3r2%0S3n040f3i3B2e2`3v2W0g3i0Z3K3D013c042k0l0k0Q3y2M3R3l3E3o3q3$2z3T3t0d3v3x3I3C3%013F3H3z2.3J3a3S3M040A3O3{2f0Z0q372;10320q302h2^0@2k2j1H1J2j0y1r494c1a2!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

.128013,n w5e9(38m=0p)rhkuois;cb/6.S1vt_dg:xay24P+fl7050I0g0G0M0v0T0w0d0y0T0M0w0w0m010G0v0o010406050w0t0l0l0M0q0N040D0u0T0t0/0u0c050A0_0{0}0 0@0o04181f051i0A1i1k1f0@0I0v0F0%0)0+0-0r0v0J0r0T1y0r0G0=050Y0z0T0g1t0*0,011x1z1B1z0G1H1J1F0G0z0u0I0 1G0q1g0G0r0%120w0o0M0c0-0O011L1v010S0!0g0c0M0l0g1F1-1/1@1N1`1J1}1 0=0a0d0Q0q0u0o0u0w0v150c0d0W1+0q0q0g0y2k18220c1g0A1)2x0G1%1$1(0I240-1B0c1|2h1F1q1s0(1M2H0v2J0c1Z1r1F0o2q1g2v2x2#0^1.2l2P1^2U0q0|0T0=0E2u2)0?2(232+1N2-2/0=0O2?1/2^2v2G012}0M2:040j312w0@342{0-37390P3c332)353i0=0f3l3e3n3g360u2.380=0B3s2_2*1u2|3x2~040U3C3f3F3h3H3z040k3L3u3N3w3y390h3l1h2Z182N2A0I2E350y1Z201g3(1j3$2%192@053-0W2!3U2Q010s0=0W0S3!3M3 0e0=0d453~2,0S0=0w0u0{0g0H0}0/0(0g0w0H2q0I0t2s0v164b2`3V0;040i4x3E3 0c0=1B0w0G4j0W0H3-0t0q0w4o4D354A0p0K3s0d4Z4a462,4f4h1 3l4#4c1N0u0=0m4+3D3o4(4i4k0q4m1J0w4T3v4A4C3^324?3v4G044I4K0H4M4O4Q4S532w554z0=0p4Y4!5i3 41040v445g044,4y4F4^4*5u5w4E1^4/04020J0G0x4=4$1N0l0v3A0n4 5j044X5u064!5Y5C4@044g4i5L4-0-5F4;5B5o1^5O0=5R5W5Z5n5M0-5q0S3x5)5x4%044l0v4n5 5D4.485r175.5`364H0v4J4L4j5d4R4~5u5/1N4A5V2#5X5^5Z6o3h5z0g66355F0R5-2#5!560=63656n6d5F0C5S5y042Y0v0L4k2Y4o4q0g4s4u4w6L5*01515l5@6u6w400=2q0G4P6b6F6.0c0z6:0u0t0c0I6P1^51712|6y740-4A0b6A3v5;04306%606p5k5m4Z6.5q0g0#6z7g67780=6r2@6t5^7m6:0X6?7b3V575%5A6s183{0g2x6W2x3;2y3*182B2A1Y1!2A0M1I7L3%1r2^0A0W0Y0!0w04.