Correction d'erreurs (1)

Avant d'exécuter le code, l'interpréteur vérifie que sa syntaxe est conforme. Si la syntaxe est conforme, il exécute le code. Dans le cas contraire il lève une exception.

Anatomie d'une exception

Commençons par générer un « bug » en exécutant le code ci-dessous :

###(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

Commençons par la fin. On trouve sur la dernière ligne deux informations :

  • le type d'erreur (ici SyntaxError) ;
  • un message expliquant plus précisément l'erreur.

Les lignes précédentes constituent le traceback. On y trouve :

  • le numéro de la ligne où se situe l'erreur : File "<exec>", line 1,
  • l'endroit de la ligne où se trouve l'erreur. (ici, on pointe le guillement qui n'a pas été refermé)

Corriger chaque programme pour qu'il puisse s'exécuter sans erreur.

Programme 1

###(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 : 10/10

.128013:pbvà(40i2+edm3;s= 1Eo5w_lSnatf-)OhR,qcrg.éyPkuè/050n0m0E0D0j0A0r0t0N0A0D0r0r0s010E0j0c010406050r0V0o0o0D0O0S040B0w0A0V0=0w0C0t020D0o0c0q0t0K0m0 0O0M0V0m0r050X0|0~10120`0c041q1x051A0X1A1C1x0`0n0j0e0*0,0.0:0J0j0P0J0A1Q0J0E0^050#0d0A0m1L0-0/011P1R1T1R0E1Z1#1X0E0d0w0n121Y0O1y0E0J0*150r0c0D0C0:0k011%1N010F0%0m0C1d0m1X2224291)2c1#2f0o2h040a0t0T0O0w0c0w0r0j181a0Z200O0O0m0N2C1q2j0C1y0X1~2O0E1|1{1}0n2l0:1T0C2e2z1X1I1K0+1(2Y0j2!0C1^1J1X0c2H1y2M2O2_0{231a2*2a2/0O0 0A0^0u2L2}0_2|2k2 1)31330^0k3724392M2X013e0D34040p3i2N0`3l3c0:3o3q0h3t3k2}3m3z0^0x3C1z2@1q2(2R0n2V3m0N1^2r0Y1J1y2?0m2^383J3S0Z3!3b1M1)0U0^0Z0F3J3w3+0:0y0^0t3;3E3x3n0F0^0o0V0A0=0c1T0m3{3*2+010@040g482~3?3n0^0C0d2H361r3#3=4a4c0L3C3`4q304j4l0m3h4o3j3a4g4r0^0H0b3C060t4M4v3|4h0C0^2H0|430D0E4u4E3m0w0^0s4Y4w1)0o0j0^0i4K4N4O492a3-040F0w0O4(4P4a4R040j4|4=1)0w3^500C524F300d4S240P474C2N4Z3}4c4e5h3)5a3d4y4m4f3m4c4I4/4:4N5j4Q4S1o420#4X5n4;5p0:4#044%5H5A4~5C4U5F594!0^0l5U3}4 4k2H4B2_4L5z4)0:4@2H0E0V0O585O5+4i044T5E4W4K1q3%3Z3K600X3N1q0E3P652T2P1@1_2R0D1!623N1w5o3m2H0o0z0F0D0U0m0z0J0p0^1i1k1m1o0t4J5n1z391x0v1a0,0C0P0D5f2u0S1~190L0t1#0*100D2J0W2H3`5 046B6#0t242/0C0N1$6T0n0R0d170t0n000V1a1!0w0N6@002-0r2S0V2J0j190r0Q6D6i0I2D0w2B6@196~6T2S0w0V0e0m0O0t0f6S0D0t2c2D6z1-2!0)1m0j200~2e6-0C0E0t237p1#0)0o0w0E0r0G0+0R0)056#0j3:0X6#6R7W3T040y1P1#5~7(7$6#4_4{7!7(0t7l6!7(3/7-3(0t0g2e2S1$0D174T0Q870H791D39630!0$0(04.
Programme 2

###(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 : 10/10

.128013:Lpbv(4i2edm3;s= 1o5w_lSênatf-)hR6qcrg,.éyPkuè/050l0k0C0B0i0x0p0r0K0x0B0p0p0q010C0i0d010406050p0T0m0m0B0L0Q040y0t0x0T0:0t0A0r020B0m0d0o0r0H0k0}0L0J0T0k0p050V0`0|0~100^0d041o1v051y0V1y1A1v0^0l0i0f0(0*0,0.0G0i0M0G0x1O0G0C0?050Z0e0x0k1J0+0-011N1P1R1P0C1X1Z1V0C0e0t0l101W0L1w0C0G0(130p0d0B0A0.0j011#1L010D0#0k0A1b0k1V2022271%2a1Z2d0m2f040a0r0R0L0t0d0t0p0i16180X1~0L0L0k0K2A1o2h0A1w0V1|2M0C1`1_1{0l2j0.1R0A2c2x1V1G1I0)1$2W0i2Y0A1?1H1V0d2F1w2K2M2@0_21182(282-0L0}0x0?0s2J2{0@2`2i2}1%2 310?0j3522372K2V013c0B32040n3g2L0^3j3a0.3m3o0h3r3i2{3k3x0?0u3A3t3C3v3l0t303n0?0I3A1x2=1o2$2P0l2T3k0K1?2p0W1H1w2;0k2?363R3!0X3,391K1%0S0?0X0D3R3u3?0.0v0?0r3|3J3~3l0D0?0d140p0w0M0L220l433=2)010=040g4h2|450A0?0B4o3k4l0N3A423}4j4r040e4u3K4l0F0b3H060r4M4z444j3^040i3{1p364O4i2~4s4y384p4j0t0?020M0C0o4#4A4Z4D4F454l4J4V3h4L4N4}4$3k4R2F0C0T0L0A4/4P4;4t4`3s4~4:3@0?0k0$0k4?4j4^3H4}5d585f045254565b044X4%4;4E5w0^0V3/3+3S5G0V3V1o0C3X5L2R2N1=1@2P0B1Y5I3V1u3;5z1%2F0m0w0D0B0S0k0w0G0n0?1g1i1k1m0r4_2_1B371v0c000k2E0k540r0f0i2c0C0r0l0T0r5)2z0r5?0r1Z0r0p0t0T0p0E1Y0t0K0r0B2;0U0%055F045h0p0k4_6y690t6e0z2Q1!2+0X0A0C0P0N690P0K3n0P0O425{5Y5~6m0B0M1!0f62686g0x00170r150#0i6B6f0T0B6J0r1m210K5@2w630T2Y0r6L676`0i170O1x375J0Y0!0$04.
Programme 3

###(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 : 10/10

.128013:pbv(40i2+edm3s= 1o5w_lSnatf)h],crg[yPku/050m0l0B0A0i0x0p0r0H0x0A0p0p0q010B0i0c010406050p0O0n0n0A0I0L040y0t0x0O0*0t0z050P0;0?0^0`0/0c04131a051d0P1d1f1a0/0m0i0e0Y0!0$0(0E0i0J0E0x1t0E0B0-050T0d0x0l1o0#0%011s1u1w1u0B1C1E1A0B0d0t0m0`1B0I1b0B0E0Y0}0p0c0A0z0(0j011G1q010C0V0l0z0A0n0l1A1(1*1/1I1=1E1^1`0-0a0r0M0I0t0c0t0p0i100z0r0R1$0I0I0l0H2f131}0z1b0P1!2s0B1Y1X1Z0m1 0(1w0z1@2c1A1l1n0Z1H2C0i2E0z1U1m1A0c2l1b2q2s2W0:1)2g2K1:2P0I0@0x0-0s2p2!0.2Z1~2$1I2(2*0-0j2.1*2:2q2B012^0A2+040o2|2r0/2 2?0(32340g372~2!303d0-0u3g1c2U132I2v0m2z300H1U1{1b3r1e3p2Y142/053w0R2V3i3b010N0-0R0C3n3a1p1I0v0-0r3R3K3T3c0C0-0p0t0?0l0w2N1l0H0l0p0w1)0i0I0p3Y2=3!010,040f3`2#3|0z0-1P0l0A0O41303~0D0b3g060r4h3X3S2L310-2l0;0x0T0B3g4j3Z4l0t0-0q4t2;424l0n0i0-0h4f4i4u3{4l3N040C0t0I4A4k2%0-0i4S4v1:0t3V042N4X4L1:3~0K4a3L4E4G4-3|3~0G4(4C1:4/042{3E2}4B4b0-4@4~2r4K4_1I4{3f543J4)1I3~0F4e5b4g4J4i503L44044o0O4q0A4s5b56304x044z5v5m434n3:5r4r4^5x0-0k5I5n450A1D47495b5C4l4+4;4l5o4W5T4T5e0-0F4I5l5$0(4N2l0B0O0I125B5,4m5p5F5s5u2W0/0P3H0l2s2T623q1m3s2v2x2t1T1V2v5P1E2s3r5 0R0T0V0p04.
Programme 4

###(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 : 10/10

.128013:pbvà(40i2+edm3;s7= 1o5w_lSêAnatf-)h]R,qcrg.[éyPkuè/050n0m0G0F0j0A0r0u0P0A0F0r0r0t010G0j0c010406050r0Y0o0o0F0Q0V040B0w0A0Y0^0w0E0u020F0o0c0q0u0M0m120Q0O0Y0m0r050!0 1113150}0c041t1A051D0!1D1F1A0}0n0j0e0-0/0;0?0K0j0R0K0A1T0K0G0{050(0d0A0m1O0:0=011S1U1W1U0G1$1(1!0G0d0w0n151#0Q1B0G0K0-180r0c0F0E0?0k011*1Q010H0*0m0E1g0m1!25272c1,2f1(2i0o2k040a0u0W0Q0w0c0w0r0j1b1d0$230Q0Q0m0P2F1t2m0E1B0!212R0G1 1~200n2o0?1W0E2h2C1!1L1N0.1+2#0j2%0E1{1M1!0c2K1B2P2R2|0~261d2-2d2=0Q120A0{0v2O300|2 2n321,34360{0k3a273c2P2!013h0F37040p3l2Q0}3o3f0?3r3t0h3w3n303p3C0{0x3F1C2`1t2+2U0n2Y3p0P1{2u0#1M1B2_0m2{3b3M3V0$3%3e1P1,0X0{0$0H3M3z3.0?0y0{0u3@3H3A3q0H0{0r0w110m0z3#0o0j0m0Q0r0z2h0^4c1s1u3(3^2.010`040g3~3-4n0E0{0E4s313_4o0{0J0b3F060u4H3}4m330{2K0 0A0(0G3F4J3 4A0w0{0t4S3d4z4n4a0{0i4F4I4T4t2d3:040H0w0Q4Z4K3g0{0j4@4U4n0w3{042:4|4-3g0d4M270R0m4y3p4p4r4k3m4!3p4%04395f2Q5h404p0N534#4L044x5m044,5t1,4W040l5s5i0j385b5p4C4E5x4G4+4I5o4A4v044N0Y4P0F4R5x5z3p5C4Y5!5R4u4M1r5W4Q5F405C5E5)4^3B4`4*5Q5^014/2K0G0Y0Q5w2|5#405T5V5X5Z654I0}0!3*3$3N6h0!3Q1t0G3S6m2W2S1`1|2U0F1%6j3Q1z3,5A0?2K0o0z0H0F0X470K0p0{1l1n1p1r0u5M2~1G3c1D6g5U585a6f3W5y0n0w2E0u0C2V1)0 1M0j0u2H262K0E210Z0r1r0N23460u0Y2%0u4;0E2M0j1c0S1C3c2+3p0F0n0o1c2E781d0y130E2:0R0{1z7e7g7i2F0I0^0G1@040W133V620,0n00720u1?0m0F0Y0u6@0u2:1L0P6Q0w7O7Q0e3s0m7F7b6z0D1=4g7k0u0f0u73260,3V0E750n2K0u1(7P7D7W4d6=7I1d7L7N7}0Q7R0E7T6}0u1p6;1a0*0j6|3}6X0Q6Z1t6X7P7 0u0U0E100U2K871(0,7S0j7U0r0b6e1D7d401.1V1X1Z3!3O6T2~6X5*5u1$5:4V4X8V4n4p0T5J4A5j3v5x8S1,5q8Y2d5j3E8*5}8-5@4}8/5H043k8=8_8,0{5r8^540?5j0s8$8Z0{0L4F8+5_5U5-6a8.5B8X936B015j4)5N9d5~0{4;4?9l3I5`9w5;50529z5S566Y0E59982d5d9J550{2r9M0?9L8~943q0{8U9T9m4p0J4D4S664A0P0v0{037R7P6^2Z0 0P8C2D0e1m4g7{6Q7Z1(7F0u0i6~0v6~0k6~8)2|5O4H9r689g5/9D4~9k65ac5,4Oafaj5}5=9i9e9X2~8?0{8#9Y9x519Q4B049b9q6#3+6i2R6l1I6V040%9|867E807H7J847X130u9~7#4d6~8d0u0Q0U0P0Y0c0Z7`0G8q7.a:620-0K0F6P8r0A0U2t6_6=7OaV6R7%3Y2,4A8J1:1Y2^8O3(8*8R5}5T6b3b9(ah045(ao8 9RawaB8(aB8@bp9U8:bv91ar9n8{8}aubqaC92bx9m96bAaD9cbhal5.5YbC5%bC9obPbH4/9ubC5T64bk9r4 4`b(3mbl8T6vbN6Sbkb/1,9*9,7/9/2h9;0Y9?1r9^9`b08yaY7!a00p6~0ha56~975N4+ak9fambTag2dbVcm4_cjbSbjb.b*0{5?bKazb-3x8n6$aI3P3Z6e6y3P0%0)0+04.