Aller au contenu

Création d'une classe File à l'aide de list

La cadre

Créer une classe File, c'est coder les méthodes suivantes :

  • __init__ : l'initialiseur permet d'obtenir une instance de File vide.
  • est_vide : revoie un booléen ; True si l'instance est vide.
  • enfile : modifie l'instance en ajoutant un élément à la queue.
  • défile : modifie l'instance en supprimant l'élément en tête et le renvoie.

Exercice

Coder une classe File qui s'appuie sur les listes dynamiques de Python.

👍 On pourra utiliser raise ValueError("File vide !") pour provoquer volontairement une erreur, si besoin. (Aucune obligation dans cet exercice)

###(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 : /
.128013],59/f.q!78rnb _o=ylaepcwgu)vdV46F13kméhtsP(S02C[i:E050E0w0P0v0Y0u0Q0p0y0u0v0Q0Q0s010P0Y0x010406050Q0B0M0M0v0m0t040T0r0u0B0^0r0n050f0 1113150}0x04051l1e1o0f1l0}0E0Y0D0-0/0;0?0O0Y0A0O0u1C0O0P0{050(0o0u0w1x0:0=011B1D1F1D0P1L1N1J0P0m1m0P0O1P1z010g0*0w0n0v0M0w010-180Q0x0v0n0?0V1J1`1|1*1R1-1N1:1=0{0a0p0R0m0r0x0r0Q0Y1b0n0p0$1^0m0m0w0y2j1e210n1m0f1(2w1#1%1$1K0E230?1F0n1/2g1J1u1w0.1Q2G0Y2I0n0r2M1J0x2p1m2u2w2!0~1{2k2O1+2T0m120u0{0p0J2t2(0|2%222*1R2,2.2:0V2?1|2^2u2F012}0v2/040p0K312v0}342{0?37390p0G3d332(353j2:0d3n3f3p3h360r2-382:0H3u2_2)1y2|3z2~3a0k3E3g3H3i3J3B3a0l3N3w3P3y3A3k0e3V2`3X3r040J0U3$3G2P3Y3K0J2=1f2@3v3%3/3)0J303@323_3.2+3R390J3c3 3e3F3q440{0J3m483o3`433Z4d3t4g414b4k3*3D4n4a3x3|3M4g1p2Y1e2M2z0E1%2E3x0y2U1?1m4C1n4A2$4y4I0$2Z3W3/0L0{2{3n4u3X0z2:4Z3O3{0y0{0I1.4(4U1+0`040S0C0Z3-354$3a0p4~4/4i1R0Q0E0{01560W3H1O4-1N0p0v0D2q0p1N0,1F0Q0P0w0,0E0t270Y0i0B5n2l1O0R0t1(1c56013u064~4 4)1+4W040$0g50421R4|0p5O350g0M0{0q0q2R2i5Y5T3x4=0S5%3X0o4=0Q0w0u5N4y5I1R4=4^3u5G5|5S5@0?5-0{5/5;5+3/0r0{0h652+0{0E1c0n0N5n3n5~4:1R67040s6i4!3/4=0X0b5E5|6q5J6c0w5=2$5 015R6a2|0g0{5n0P0q0D0Y0$6G0?5)6Q016104636B2@6x5^0{5`4n5}5G6!0?5K2p0P0B0m1d4g6j51605.5:6Y326+016m695?6k3i6c6e6g0Q6p6D6m0s6o6?6~6s6u4n5F6*6D5K5M6T6F726^366I041/250w6T6S7q5P6_626{7y0{0c7973360{0N0u0N1=0n0P7F046%2!7j6)6~6V6X6T706T0n750n6f6h7A357$7-4v0{0v0x0x1/0E7S5*7:3(7L7N7P7R7}6r6$6v7k7J7m6A7o4%832+7t0E0N7w7{6T7Z7E8d6#7T4_6(6)6@7B015K0Y6|2v8t358l648n0?7/6C7J7(5L767,2!8A3x7b7d8N7f0{6t8q7V8s5}6~6-0)5/7I7r2I0{0F385u0!2o3z8j8E010Q1 04015b1O6N2m0j5D8?5_5{8s8!6J0+7x920{8W3^8Y6w7l0{6.6:6=8S6D8C8y4T7r8G6Z6D8J6d7*777#687%0{2f0x8=8H7r0M0Y0{3,9a7T3E0f4R0w2w2X9Q4B1v4D2z2C2x0v1M9T0f4C0}9%0%0)0+04.
Dernier test volontairement faux
🐍 Script Python
# TESTS
ma_file = File()  # (1)!
ma_file.enfile(1337)  # (2)!
ma_file.enfile(42)  # (3)!
y = ma_file.défile()  # (4)!
assert y == 1337    # (5)!
y = ma_file.défile()  # (6)!
assert y == 42      # (7)!
y = ma_file.défile()  # (8)!
  1. ma_file est créée, une file vide ; []
  2. ma_file devient [1337]
  3. ma_file devient [1337, 42]
  4. ma_file devient [42] et y devient 1337
  5. Aucune erreur ne sera provoquée ici.
  6. ma_file devient [] et y devient 42
  7. Aucune erreur ne sera provoquée ici.
  8. ⚠ Une erreur sera provoquée, on ne défile pas d'une file vide !
📤 Sortie
Script lancé...
Traceback (most recent call last):
File "<exec>", line 26, in <module>
File "<exec>", line 15, in dépile
ValueError: File vide !