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

Python Console Session
>>> 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

.128013kgĂŞ[: r);SĂ©/q(.lo4y,6b=ac15ud3t2!8_Pw7evp-fh09mn]iCs050D0N0F0y0Y0q0!0g0z0q0y0!0!0x010F0Y0P010406050!0C0V0V0y0h0t040k0r0q0C0^0r0W050m0 1113150}0P04051l1e1o0m1l0}0D0Y0O0-0/0;0?0/0W0c0C0y0c0N0Q0P0t0F0S1c0g0S0Y0c0S0q1Q0S0F0{050(0w0q0N1x0:0=011P1R1T1R0F1Z1#1X0F0h1m1L0-180!0P0y0W0?0G011%1z010R0*0N0W0y0V0N1X1|1~231)261#292b0{0a0g0K0h0r0P0r0!0Y1b0W0g0$1`0h0h0N0z2w1e2e0W1m0m1L2J1?1^1@1Y0D2g1A0Y0W282t1X1u1w0.1(2T2V0W0r2Z1X0P2C1m2H2J2:0~1}2x2#242)0h120q1X0y1O2C0R0?030J0J0z2*0N1T2(0r0Q0A3e0{0g0A1e0y2;2@0|2?2f2_1)2{2}2 310N33013537393b2W3e0Q21040g0G3k3m1~3o2H2S013t0y2~1m300S323436380$3D2)3F0E3h0E3L2G3n0}3P3r0?3S3U053W3Y3z3!3C2U3E3f0s3h0s3-1f3/3p2^1y3s0r2|3T3v3X3x3Z3B3$3 3(3f0B3h0B452:3:2@3Q3@4f3{3A3#3a4l3d3f0v3h0v4r473;4a3?4c3u3V3w3y4z3~3c3F0M3h0M4I3N4t3q4L3R4N4e4P4g4R3}4k4U3f0I3h0I4Z2I4#492$4(4d3^3`4h3|4j4B4:0Q0U3h0U4^3O4u3=4}4O3_4Q4i4A3%4D3e0T0{0A0T5a4`4v4)4 5h525j4C3F0A0A5o3j0m3l3.4!485t4~4x514S4/403e3H0A3K5F3M4_5J5d4w4+4y4.545Q0A3*045*5r5Y4%5!5g4,5i4T5)425,445V5H5X4K4|5;504-535k5A4o5,4q5}465I602`5u5M645y550A4F5,4H6b4s5/616g5#5N5%663f0A4W5,4Y6p4J5c5:6t5=5$655z6y4=5,4@6D6d6F6s5L6u6i5^4m3e575,596Q2I1p2.1e2Z2M0D1^2R5d4A2Y1v1m2-0N2/3n5~1m4A6{2f0Y0D0?362H5A3v72746K6k222k0N7a6j5)1X5}6e1)0b0{0$0R6}0g6r2`0R0{2C0W0O0N0h0!0N6}7t1)0`040o7E7l3?0{0P277K6S247H0i0f6}0}6c6(3P7901752@3F3H5g7#6w6L3G7d2a7f7$7b5Q7*7k7R1)0L3h0g7 7Q4$4|0!0D0{02030E0U0j87898b888a7x0O0r0Y1$0C2V0g7O1#1`0W0F281~0F0g1#0,0V0d2b0,0l0q0l2b8s0,0n0C1$8p0N0u7W812x7,0J763f5+7+737?7h6Y3*0g7e7g6X5l8X7`8224847~7 120Y0,0D1~0,0q8c8a4c0D2C0g2U7z7B0N0p8Q7Y708S8Z7%1~3F5`8Y8*5P6Y428(7;9j5(9l7j5G7L018;3I7 0g0Z0%8t0g0R1c2E0Y1N0D0l1?0C2v8o270p8~8e8d9R992=7!9d8U7(4n789Y8#5l4o9n2b9p6x0Q683L9y7s9u0W7N270J947A7C7r7F0?0r0{0x9 9u7H0e0X7r7X9W4u8T8V0Q6m9i8!8+3F4F9+7=7-55ah5V9=a0017n040L1P1#a57{7M048NaB8/1)a2040Ha49a9?aC01a70X7V9aab6|9X7aaf6Aaiap5Q4Wan9-7.a!as9=9yau9^aE9`9|968R3QaJ989aa:0{0y0P0P280Da_5d7H7Ja}9@9_aAb9aPa{b55:7N2rbg4|b70i0iaaa_ae9!0Q6Na#7@6Y4=a)aj9k5lbua-809uaw2C0F0C0h1daNa~a=1#9{7y9}7DaNaV3N5Jbr9f3f6!bv9(3F57bza$6Yb$5VbW7Zad9Yaf5p9$a*6k5nb+bw5lb^2J3lb:9b93b?bs5Bb_bA9qb 5Cb}b(6y5Cc1c45daw7paG4{7ubi2u0^0R0!bk7S0{b8acaHaDaFbdcAaQ0{7U9VaWb=aYc77*308Tcf5R7:9,ca9.5T9scj4%7}9x80cDco1)9w9Rc+8f0j8h8j8l8n8N8r8t298s8x0N8D8F8H0F0,2scr0Yct2y8M278PaUbqc6b!3e8XcO9%ak6y8%8)cU7.5*cXau9w9=8`0W8|1$8A2b0g902C0p9z9B1$9E0W9G9I9K0h9M8w8N9Qc-c,8dcIbXaX7?b@9hdgb`5_cSaob~5A9hbEaOcEa;8N0Jd22vd4cubN9uaJaM2:d,c(0?aRbpc%c5cLdd0A9:dZdm6k9*dlb,b 9:d+auaway7Pd^aPd.ekd|auaJaLcn3QaRaT6qe2bZ0W5Aahe8edeBd$d!6Y6lcXa.a/ba043a0Fet5dd`eRbhbPbUczd~01bfe25Zbi0Pcv7GcxbobVdbe4eA6ya!eDd(e=eGe95)a,3leLbFaPawd4eU610{ePf424aJ020c0F0jd{3nd}3Q0V0Y0{5qe$4%7Hewfgc3bYdce;3ebue@cQ0Abyece^fweKe ateNd/d;csd@eYa`0{a|fNe%04b0b20Wb4fnblcxe*aDf7fYcw04e-exfNez5Ab$fydi6Ze`eE6yb.e~eMf17w0%bKbMepeN8hbTf#cF7Ig6enbQfKd?g67TdT6(0m6 6)6`6+6@1e0F6.go2P2K0y1!gl0m6,7X0$0(0*0!04.