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

.128013bSu[,3.4l(n/)paPhors1vc25Amgyd]i9 fte=050E0L0K0p0G0j0u0I0x0j0p0u0u0M010K0G0o010406050u0d0B0B0p0t0D040c0s0j0d0%0s0l050m0.0:0=0@0,0o041017051a0m1a1c170,0E0G0w0V0X0Z0#0r0G0C0r0j1q0r0K0*050Q0b0j0L1l0Y0!011p1r1t1r0K1z1B1x0K0b0s0E0@1y0t180K0r0V0`0u0o0p0l0#0y011D1n010J0S0L0l0p0B0L1x1#1%1,1F1/1B1=1@0*0a0I0q0t0s0o0s0u0G0}0l0I0O1Z0t0t0L0x2c101`0l180m1X2p0K1V1U1W0E1|0#1t0l1;291x1i1k0W1E2z0G2B0l1R1j1x0o2i182n2p2T0-1$2d2H1-2M0t0;0j0*0v2m2X0+2W1{2Z1F2#2%0*0y2+1%2-2n2y012=0p2(040g2_2o0,2|2:0#2 310i342p2Q0L2p2F2s0E2w2}0x1R1^183i1b2R2.2o3d053n0O2S2X2}0l0*0x0=1M0L3d0I3u2}0s0*0M3J3L382~0*0A0t0%0W3I112,3R1m1F0)040k3w373%0#0u1*04013F3W0p1A1^3,3B3S3)0f3Q3-2I010B0G0*0i0z3|2/3.013)0n3d363}4c3D040x0t0p0D0~0u414i433N043P3!2`3K422!3U3W0G3Y4a2Y4c3)3+4y3v4B1F3:0*011Q2b1C2f4m4o4q2e1C3n0d1B0d0t0u014H2}3 4s4b430B0J0*0H0h0H494M3A4;1-4e4g3$434k2t0s0d0Z3Z2T4A4t1-4v4x5b534C043V3X1B4-3~0*4L2V4O3/3;0$26580u3{4}5i3(0*404}5c4 1F452)2^5B5t4d0*4f4}4h5I393E574*0L4r5G5C0#5f4:4I433)0e5o4j3E3G3_5n5N5d5D045F5h5O4k4X4p0l5!5s5^0#4/5#5}0*565y5a3#5O3)0F520m3y3g193t0m3r2q3k102t2s1Q1S2s5=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

.128013buS,3_4l.(wnx/)paPk0:hors1vc25mgydieft =+050I0K0M0r0J0i0z0N0C0i0r0z0z0O010M0J0q010406050z0c0F0F0r0y0H040d0x0i0c0*0x0m050o0;0?0^0`0/0q04131a051d0o1d1f1a0/0I0J0B0Y0!0$0(0w0J0G0w0i1t0w0M0-050T0b0i0K1o0#0%011s1u1w1u0M1C1E1A0M0b0x0I0`1B0y1b0M0w0Y0}0z0q0r0m0(0D011G1q010L0V0K0m0r0F0K1A1(1*1/1I1=1E1^1`0-0a0N0s0y0x0q0x0z0J100m0N0R1$0y0y0K0C2f131}0m1b0o1!2s0M1Y1X1Z0I1 0(1w0m1@2c1A1l1n0Z1H2C0J2E0m1U1m1A0q2l1b2q2s2W0:1)2g2K1:2P0y0@0i0-0A2p2!0.2Z1~2$1I2(2*0-0D2.1*2:2q2B012^0r2+040f2|2r0/2 2?0(32340h372~2!303d0-0E3g1c2U132I2v0I2z300C1U1{1b3r1e3p2Y142/053w0R2V3i3b010t0-0R0L3n3a1p1I0l0-0N3R3K3T3c0L0-0z0x0?0K0g0^0*0Z0K0z3Y2=3!010,040k3=2#3@0m0-1w0z0M3+0R0g3w0c0y0z3:3|303_0p0v3g060N4j3X3S2L313%3)1`3g4l3Z4n0x0-0O4s2;3}4n0F0J0-0u4h4k4t3?4n3N040L0x0y4z4m2%0-3-0J3/4R4u1:0x3V042N4Y4K4T0441430g4547494b3E2}4A4d0-4g4@384I4I4_3L3 043(3*4)4B4!0-0P4y4}044J582@4U0y3.1E4c3L4w040j5m3~0-2T0J0n4H4k513@4M2l0M48125d5f3j0b0-290c0m0I5r4n3_3{5d5z4n53554r5T4S1I3_0e57304D2`5P1:4e4h133H0K2s2T5=3q1m3s2v2x2t1T1V2v0r1D5^0o3r0/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

.128013bSu.ln/paP0hors1vc2mgydi fte=050x0C0B0j0y0f0p0z0s0f0j0p0p0D010B0y0i010406050p0d0u0u0j0o0w040c0n0f0d0U0n0g050h0#0%0)0+0Z0i040@0~05110h11130~0Z0x0y0r0M0O0Q0S0m0y0v0m0f1h0m0B0X050H0b0f0C1c0P0R011g1i1k1i0B1q1s1o0B0b0n0x0+1p0o0 0B0m0M0.0p0i0j0g0S0t011u1e010A0J0C0g0j0u0C1o1S1U1Z1w1$1s1)1+0X0a0z0k0o0n0i0n0p0y0;0g0z0F1Q0o0o0C0s230@1.0g0 0h1O2g0B1M1L1N0x1:0S1k0g1(201o191b0N1v2q0y2s0g1I1a1o0i290 2e2g2K0!1T242y1!2D0o0(0f0X0q2d2O0Y2N1/2Q1w2S2U0X0t2Y1U2g2H0C2g2w2j0x2n2p010s1I1,0 2?122I2#2f2-342|0F2J2O2`0g0X0s0)1D0C35392$1d1w0n0X0e3i333b0X290u0y0p3h0^2Z0z3r2%0S3n040D3i3B2e2`3v2W0l3i0Z3K3D013c042k0n0d0Q3y2M3R3l3E3o3q3$2z3T3t0C3v3x3I3C3%013F3H3z2.3J3a3S3M040t3O3{2f0Z0h372;10320h302h2^0@2k2j1H1J2j0j1r494c1a2!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

.128013buS,3_4l.(wnx/8p)aPk0;:hors1v7c256mgydi9eft =+050M0P0R0s0N0i0B0S0F0i0s0B0B0T010R0N0q010406050B0c0J0J0s0A0L040d0z0i0c0/0z0m050o0_0{0}0 0@0q04181f051i0o1i1k1f0@0M0N0D0%0)0+0-0y0N0K0y0i1y0y0R0=050Y0b0i0P1t0*0,011x1z1B1z0R1H1J1F0R0b0z0M0 1G0A1g0R0y0%120B0q0s0m0-0G011L1v010Q0!0P0m0s0J0P1F1-1/1@1N1`1J1}1 0=0a0S0t0A0z0q0z0B0N150m0S0W1+0A0A0P0F2k18220m1g0o1)2x0R1%1$1(0M240-1B0m1|2h1F1q1s0(1M2H0N2J0m1Z1r1F0q2q1g2v2x2#0^1.2l2P1^2U0A0|0i0=0C2u2)0?2(232+1N2-2/0=0G2?1/2^2v2G012}0s2:040f312w0@342{0-37390h3c332)353i0=0H3l3e3n3g360z2.380=0I3s2_2*1u2|3x2~040E3C3f3F3h3H3z040p3L3u3N3w3y390O3l1h2Z182N2A0M2E350F1Z201g3(1j3$2%192@053-0W2!3U2Q010u0=0W0Q3!3M3 0l0=0S453~2,0Q0=0B0z0{0P0g0}0/0(0P0B0g2q0M0c2s0N164b2`3V0;040k4x3E3 0m0=1B0B0R4j0W0g3-0c0A0B4o4D354A0r0x3s0S4Z4a462,4f4h1 3l4#4c1N0z0=0T4+3D3o4(4i4k0A4m1J0B4T3v4A4C3^324?3v4G044I4K0g4M4O4Q4S532w554z0=0r4Y4!5i3 41040N445g044,4y4F4^4*5u5w4E1^4/04020K0R0w4=4$1N0J0N3A0v4 5j044X5u064!5Y5C4@044g4i5L4-0-5F4;5B5o1^5O0=5R5W5Z5n5M0-5q0Q3x5)5x4%044l0N4n5 5D4.485r175.5`364H0N4J4L4j5d4R4~5u5/1N4A5V2#5X5^5Z6o3h5z0P66355F0U5-2#5!560=63656n6d5F0j5S5y042Y0N0n4k2Y4o4q0P4s4u4w6L5*01515l5@6u6w400=2q0R4P6b6F6.0m0b6:0z0c0m0M6P1^51712|6y740-4A0e6A3v5;04306%606p5k5m4Z6.5q0P0#6z7g67780=6r2@6t5^7m6:0X6?7b3V575%5A6s183{0P2x6W2x3;2y3*182B2A1Y1!2A0s1I7L3%1r2^0o0W0Y0!0B04.