Taille v5
Une classe Pile avec implémentation récursive
🐍 Script Pythonclass Pile():
def __init__(self, données=None):
self.données = données
def est_vide(self):
return self.données is None
def empile(self, élément):
reste = self.données
sommet = élément
self.données = (reste, sommet)
def dépile(self):
if self.est_vide():
raise ValueError("Pile vide !")
reste, sommet = self.données
self.données = reste
return sommet
Rappel
La différence fondamentale, ici, est qu'on introduit la possibilité d'initialiser une pile avec des données (qui ne sont pas sous forme d'une liste !!!)
On peut alors écrire
🐍 Script Pythonreste, sommet = ma_pile.données
reste_pile = Pile(reste)
Et on travaille alors avec reste_pile qui possède toutes les méthodes de la classe Pile.
En particulier, quand la pile est vide, reste_pile n'est pas égale à None, mais c'est une vraie pile vide ! (reste, lui, valait alors None).
L'intérêt de ce genre de définition est qu'il est très commode de construire d'autres méthodes qui se prêtent bien à la récursivité.
Exercice

Coder une méthode taille à cette classe Pile qui renvoie le nombre d'éléments de la pile.
La méthode devra être récursive et s'appuyer sur les données disponibles.
.128013x/.r;nbylaeu)dM6çz3m?(P+02è-,5fq!7 _o=pcwgv41kRIéhtsSàLCi:050o0l0Z0k0)0j0!0J0O0j0k0!0!0M010Z0)0N010406050!0m0u0u0k0e0i040#0L0j0m0~0L0g0J020k0u0N0f0J0V0l180e0G0m0l0!050c1517191b130N04051G1z1J0c1G130o0)0R0?0^0`0|0Y0)0Q0Y0j1X0Y0Z11050.0h0j0l1S0_0{011W1Y1!1Y0Z1*1,1(0Z0e1H0Z0Y1.1U010F0:0l0g1m0l010?1e0!0N0k0g0|0A1(2e2g221:251,280u2a040a0J0x0e0L0N0L0!0)1h1j0,2c0e0e0l0O2E1z2l0g1H0c202Q1}1 1~1)0o2n0|1!0g272B1(1P1R0@1/2!0)2$0g0L2*1(0N2J1H2O2Q2{142f1j2,232;0e180j110T2N2 122~2m311:3335110A392g3b2O2Z013g0k36040t3k2P133n3e0|3q3s0S3v3m2 3o3B110E3E3x3G3z3p0L343r110q3L3c301T3f3Q3h040I3E1K2_1z2*2T0o1 2Y3O0O2=2t0+1Q1H2^0l2`3a3(3=0,3}3d3Y0|0U110,0F3(3y44010P110J4a3N4c0g0F110.0:1,4h432-0110040w4q3X4s0h4u0!0l0j491A3~4b4s4u0n3E4g4I230L110C020Q0Z0f4M3W3H0h112/0Z4x3o4u0*3V4O1:4e040J4;4g4G3l4Y3O0!0o11014~1q270R0L0)1-0^0J4n0j1,0J2G560N260J4~013L4=4N4i4s46040)4F2{5l4r234A114C4E4(3O4Q040d5A4j111x0Z0K0R0)0,5F4J110w0n4+4@3w5k5k4_4c5o2J0Z0m0e0g4X4-0|0u0)110z5j4=5Y5n5H0;0l5O234*5;5W5t4y32112J0!0Z5`5U42611:4u0D5*5m62040!0L170-6e5u1:5C0M6m6a0|5w6h4D5r4H6f6o115E685?6g0o1i0g0X1x5~5W6E1:5!0-5%5)68603o5-376r3o5C0y6Y3O0g110x265{6b5Q6,3A635I672}5+4t114L6D6^5C6C6@6z6:04584p6|716_4v6{2{130c403|3)7f0c3,1z0Z3.7k2W2R0k1+7h3,1F693o2J0u0K0F0k0U0l0K0Y0t111r1t1v1x0J5T2}1M3b1G0(0-660J7A0r1i5b000X0O0e0)2J5b0m2c2G5I0J0h541j0N1f0=2C1n5a7K5b1-0,527(4N1}1i0Q047#7%2J2N830g850J7|0j007Y5L2G0m2$0J5e5a0o2g0=8l1-8o1-661n3Q0/2J0D8n0L5%0J567x7?8127152D0l0d8P1K7Q040p0/0=278n0e0k0~7K8C5a3=1g0J7.1/0l0s2c1n197q5a0H8R1O1Q3o0k0o0u1i2D0)7Y0P190g2/0Q111F8|8~902E0C0~0Z1{8T2g7|0o000l0F250O0k0O2D0X0J0v8_1I040W9t8C0k0R2K2w0i201i8C0$0?0Y0k7|1g0:0)0!8!922F1-057e3o1=1Z1#1%7v6%6)6+766n0|4u4w9.6s3p6;656?6y9/787a3~7d3?4:0Z8E660=1,0=6G0g6I7L3=0g0O0l5(6J0=8m6i0g0Z8n0_0J2J3=5eaj8P0d0J0W0j0J0!000k0Q2D0J8l0)7K2san7}ar0X0F0X2Jaf8O4?1N9z7S1_1-0u0X9J7-655b1i0O0J8-8/9o9q9saU8U9T8+597~1s2g2G0,0m0b2can270l5%0=2f0e0J0X0j0XaL0Z0!6CaW0m0j3b1!1c0)8G7Lbbbd27bfaB1iao2G0N0-8N0=741x8%b5b9ae662$8F7.2GbD8:b88?1-9M8taOaQaSagax0%1-7:0^1jbMa+bp822y8c046G0m7raN7?a=8ab-8db8ar0k0N2A0eaobT8m0)7`bsan9V7Y9E9G8l57bR0k0m6Cbm13bm0#boa8babcbe7^bw570e0B0=521f5-bK0b8CbU0eaPaR27ag8+7=7@8+a)6I0Q1@0lbRaxaY7Uc57?c70.2Ea-a-0j3Q0=148b850hcS0m8)0N7Z9E2g0.0Q6K1Ac,5D1zcj1zbj3b7i3_7c0,580!04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)