Filtre sur pile

Cet exercice utilise des piles qui seront représentées par des listes Python.

Si pile est une pile, alors pile == [] indique si la pile est vide, pile.pop() retire et renvoie le sommet de la pile et pile.append(v) ajoute la valeur v au sommet de la pile.

Si on considĂšre qu’une fonction manipule une pile, elle ne peut pas utiliser d’autres opĂ©rations que celles dĂ©crites ci-dessus.

On cherche Ă  Ă©crire une fonction positifs qui prend une pile de nombres entiers en paramĂštre et qui renvoie une nouvelle pile contenant les entiers positifs de la pile initiale, dans le mĂȘme ordre, quitte Ă  modifier la pile initiale.

Pour cela, on va Ă©galement Ă©crire une fonction renverse qui prend une pile en paramĂštre et qui renvoie une nouvelle pile contenant les mĂȘmes Ă©lĂ©ments que la pile initiale, mais dans l’ordre inverse. Cette fonction sera Ă©galement amenĂ©e Ă  modifier la pile passĂ©e en paramĂštre.

Exemples

🐍 Console Python
>>> renverse([1, 2, 3, 4, 5])
[5, 4, 3, 2, 1]
>>> positifs([-1, 0, 5, -3, 4, -6, 10, 9, -8])
[0, 5, 4, 10, 9]
>>> positifs([-2])
[]
Compléter le script ci-dessous

Compléter le code Python des fonctions renverse et positifs ci-aprÚ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 : 5/5

.128013f06S:d=4yr./opg2mcb1!w937CveĂȘ[ l,8P5)ti]knĂ©;ua(_shq050g0C0M0U0N0G0X0F0s0G0U0X0X0h010M0N0o010406050X0T0r0r0U0k0j040e0n0G0T0@0n0Q050m0~1012140|0o04051k1d1n0m1k0|0g0N0B0,0.0:0=0Y0N0p0Y0G1B0Y0M0`050%0t0G0C1w0/0;011A1C1E1C0M1K1M1I0M0k1l0M0Y0,170X0o0U0Q0=0q011O1y010b0)0C0Q0U0r0C1I1+1-1=1Q1^1M1{1}0`0a0F0J0k0n0o0n0X0N1a0Q0F0#1)0k0k0C0s2i1d200Q1l0m1%2v1!1$1#1J0g220=1E0Q1`2f1I1t1v0-1P2F0N2H0Q0n2L1I0o2o1l2t2v2Z0}1,2j2N1?2S0k110G0`0F0u2s2%0{2$212)1Q2+2-2/0q2=1-2@2t2E012|0U2.040F0y302u0|332`0=36380F0i3c322%343i2/0K3m3e3o3g350n2,372/0d3t2^2(1x2{3y2}390z3D3f3G3h3I3A390I3M3v3O3x3z3j0x3U2_3W3q040u0c3#3F2O3X3J0u2;1e2?3u3$3.3(0u2 3?313^3-2*3Q380u3b3~3d3E3p430`0u3l473n3_423Y4c3s4f404a4j3)3C4m493w3{3L4s3N3`4b3)3T4x3V4z4p0u3!4f1o2X1d2L2y0g1$2D3w0s2T1~1l4N1m4L2#4J4T0#2Y4E1?0P0`0#0b3m4t3W0w2/4/4y2*0b0`2o0Q0B0C0k0X0C4@4)1Q0_040V534h2{0`0o1_5941550`0L0f3,344=390F5p5f340X0g0`02030y0x0S5w5y5A5x5z4|0B0n0N1N0T2H0F5d1M1)0Q0M1`1-0M0F1M0+0r0D1}0+0R0G0R1}5R0+0Z0T1N5O0C0H5l3w5t2/5p0F110N0+0g1-0+0G5B5z3y0g2o0F2Q4~500C0l5?3W5^5o5p0A0$5S0F0b1b2q0N1b2k0R1!0T2h5N1_0l635D5C6A3t5`0F4:3`5c1_0W694 513m6G4^1Q0n0`0h6P6H1?560E0O6P066F6X1Q4+040w1A1M6W6R3h6J6/4f6Q540=6T040v6V6^6)0=6Z0O5k4m6F6(6;356?0C6L4}6N524J796|6d7h6`7a040U0o0o1`0g5r3w56587l5a6=045:7u3W7j7D6I7B2d7G6Y0`0V0L0L6$787m6+2o0M0T0k1c70790Q7b7d6a6O6^067+71016+4-7K1Q5n6G7y5g3h4`7I2g0@0b0X7;727M817n7C7^34565j6e3.7?5`846g6A8h5E0S5G5I5K5M5:5Q5S1{5R5W0C5$5(5*0M0+2e7}0N7 2k5/1_5=4D7z016g6F5 0Q611N5Z1}0F652o0l0F6j1W1N6n0Q6p6r0g6t0k6v5V5:6z8j8i5C6E8e7!7$8B2h8D807Z7m6|6 2Z6_8K737Q8^7S0`6-5e8 8K7#7B9c937-6|6~6:7m73752Z6%775q8_040C0G0M9m8K919z7_859h2?9j0`7k2#9u2e0o847w7P7*9s9t99048D9C3p0`9w9y9d9D6|020p0M0S922?949D0r0N0`3+877v0`9p9.9r9S989e8`2f8|7 847F9^3%0`7p7r0Q7ta73.7w849f9!9O5i8@9T8K7T0$7W7Y9i9u5G7fak57aha18Ca4ae7L049Q9q1d4$0C2v2WaK4M1u4O2y2B2w0U1LaN0m4N0|aX0$0(0*04.