Filtre sur une pile
On donne une mise en œuvre simple de la structure de Pile avec les listes Python.
🐍 Script Python
class Pile:
"Classe à ne pas modifier"
def __init__(self, valeurs=None):
"""Initialise une pile
- vide, si `valeurs` n'est pas fourni ;
- remplie avec `valeurs` sinon.
- Le sommet de la pile est à la fin de la liste.
"""
if valeurs is None:
self.valeurs = []
else:
self.valeurs = valeurs
def est_vide(self):
"Renvoie un booléen : la pile est-elle vide ?"
return self.valeurs == []
def __str__(self):
"Affiche la pile, en indiquant le sommet"
return "| " + " | ".join(map(str, self.valeurs)) + ' <- sommet'
def depile(self):
"""
- Si la pile est vide, provoque une erreur.
- Sinon, dépile un élément au sommet et le renvoie.
"""
if self.est_vide():
raise ValueError("Erreur, pile vide")
else:
return self.valeurs.pop()
def empile(self, element):
"Empile un élément au sommet de la pile"
self.valeurs.append(element)
Pour cet exercice, on n'utilisera que les méthodes de la classe Pile et non les méthodes des listes Python. À savoir, uniquement :
- Avec
pilequi est un objet de la classePile,pile.empile(element); empile unelementau sommet depile,pile.depile(); dépile et renvoieelementau sommet depilequi est non vide.
Écrire une fonction filtre_positif qui prend en paramètre donnees de type Pile d'entiers et qui renvoie une pile qui contient les éléments positifs de donnees. La pile donnees doit être globalement inchangée.
Exemples
>>> donnees = Pile([4, -11, 7, -3, -1, 0, 6])
>>> print(filtre_positifs(donnees))
| 4 | 7 | 0 | 6 <- sommet
>>> print(donnees)
| 4 | -11 | 7 | -3 | -1 | 0 | 6 <- sommet
>>> donnees = Pile([1, 2, 3, 4])
>>> print(filtre_positifs(donnees))
| 1 | 2 | 3 | 4 <- sommet
>>> print(donnees)
| 1 | 2 | 3 | 4 <- sommet
>>> donnees = Pile([-4, -3, -2, -1])
>>> print(filtre_positifs(donnees))
| <- sommet
>>> print(donnees)
| -4 | -3 | -2 | -1 <- sommet
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
.128013s3o_8;bcdufvg/0lyq |n7AapS.r1-me,(P2=4:+Vjtwki9][5hEx)6050j0G0R0y0U0q0b0t0i0q0y0b0b0L010R0U0z010406050b0k0F0F0y0C0r040A0d0q0k0{0d0v050o12141618100z041h1o051r0o1r1t1o100j0U0m0:0=0@0_0Z0U0n0Z0q1H0Z0R0~050+0h0q0G1C0?0^011G1I1K1I0R1Q1S1O0R0h0d0j181P0C1p0R0Z0:1b0b0z0y0v0_0K011U1E010l0-0G0v0y0F0G1O1_1{201W231S26280~0a0t0J0C0d0z0d0b0U1e0v0t0)1@0C0C0G0i2t1h2b0v1p0o1=2G0R1:1/1;0j2d0_1K0v252q1O1z1B0;1V2Q0U2S0v1,1A1O0z2z1p2E2G2.111`2u2Y212%0C150q0~0t0D2D2=0 2;2c2@1W2_2{2}0K301{322E2P01370y2|040t0c3b2F103e350_3h3j0t0M3n3d2=3f3t2}0Y3x3p3z3r3g0d2`3i2}0%3E332?1D363J383k0w3O3q3R3s3T3L3k0f3X3G3Z3I3K3u0V3)343+3B040D0p3:3Q2Z3,3U0D2 1i313F3;3|3?0D3a413c433{2^3#3j0D3m493o3P3A4e0~0D3w4i3y444d3-4n3D4q4b4l4u3@3N4x4k3H463W4D3Y454m3@3(4I3*4K4A0D3/4O4s3S4A0K3_4U4c4W3U0K402.4y4F4L0K484*4E3=4-4h4:4J4t4%4p4^4P4`3$0K4w4}4V3!4X4C534#554%4H584z4%4N5d4,4X4T5h4=4A0c4Z5l4Q3U0c4)424;5r3$0c4/5v4_4$5y4@5B4~5D3j0c4|5G543}5y52311q2,1h2W2J0j2N3f0i1,291p5V1s5T2:4q055!0)2-5H0_0T0~353x5w210S2}5_5C3s0i0~0J245~5;010}040N3E0t6c0t5`1W5?040)0l655N5|3k6l59220F0~0e0e2#2s6u6p3f680I6z3H0h680b0G0q6k5,5 670~0H3x6e6M0v0~0m3i0G0k0C0b6D3+0d0~0L6#3|680X0W0$6a4x6d6=6R666F0~6H6J6*216%040B6}366U6W6Y6!4q6@5N6 6)786f3s0h0~1K0b0R720_6B7l3g741S767o680$3E066=7e016h6j7o6n6e6L660v0l0~0G7j0e0m0U0)7t0~6C7G5N6_046{6K2:6M7u6:4*6?6d7z6h2z0R6Y1g7d6M7W7Y7o6 717U6q6T046V7r6Z6Q7z7b7c2.797|7g047i7k7{6A7S7v4x7x7*6M7B0G7Z5R6M7E7o0l6s046u7j0C6y8d3H7n8z3+7?6I8n3c7z7$6b7)873f0b1~04010x0l230i0Z1T0=0t0z240H0t250t2#1z0s0k1{0R0t1S0t0b0d140*018K7)7+0~7-7/826M8O0~010u0t8`7;666 0O9166938Q0t96987!9a0~7`9k5N7}0Q0d2#7R047T9o880~150z9u9w8o7H898w9u6P997V6G8F7^9m7o7}7 6X818C6+0~0$8g86830~9c9K6q9f1 020q0R0g0E8=8@281N7w7y8k0~7C9V5{5}9}367J6i0G8!1S9C7o8E6|a07m9X7%428L8M3H6h0U8G2Fah8D9Maa9x3f7_9Q7K7M7O7Qab6N9v6/8{agan3|7,0,6H9d9p5$0P3i0k0G0!2y3Ja7az9*aR2z6Y8$a51Tax299u9Zaf8L8}046IaJaz68ae4aaE8j667,0*909(3fa9al5:7a9Paz9R759Uar3Hatb50~2p9Ba;8f9^a_5N8lb17z8qb5a20G0Fa#aUb9ao6`9Nbg049J9!6S7K1S280v8cbv9W04aC6;a,7=apbm6MbbbJ2^7q9T77bU1WbT9E9p0~0y0z0z250jbub$7|bEbr25bIb/8ebL7w4+3+bl7D9 bZ3sa22f2K0G0e2p2r0{0lbYb^8A7Sau6i1f2S7La)a?3o9_7Hb(0k0#0-0U0,2zaK6q7bcx3A6264bz0Ia*a@bj6q6h0S1Ga6a~ba6n2%b@3caFbVch0vcjcc8HbSb4c17pa.aw7P0G9CbM7(bOcpa.bFb?cAba6(c^3=9{ci0Gckazb#c!c;0)btcEcGcnc:b%040ycrctcvc,d1c$cdc|a.bscDc%8Bc%7}6Ib=bHa)bi6c7z7}2z129-0ycSam9#048531cU730463cNdpbhbNdy9`04cLdodK83cQ0ddF6obDdcde1Kdg9O70cg7L0R7Nc+c-cm0 agdzb;bGd$dL0_czcOdlddcsd+0Ucwdid.bca3d6dQaBaDcodb0jc~d0c%d22Fd{dmeddkbK9Dd3dbdtd}dwdS6?a-akc{45d|c@e23|6 020n9.dJcT7z0F0U0~5pes21a=egdab:04dB0kdDd$dH9neVdMbrerev6qdqe,3seGdvbzd80 8idTa`8~a|0C7:bCc;e$e(3O0o5.0G2G2+fb5U1A5W2J2L2H1+1-2J0y1Rfe0o5V10fr0*0,0.04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)