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,:ag)R1iknè/àSé=vmsuhb.O4;ye+2o-dt c0(Ewr5_P3qplf050H0C0I0d0i0W0t0J0K0W0d0t0t0q010I0i0V010406050t0u0s0s0d0P0B040o0F0W0u0=0F0k0J020d0s0V0A0J0g0C0 0P0U0u0C0t050m0|0~10120`0V041q1x051A0m1A1C1x0`0H0i0r0*0,0.0:0v0i0e0v0W1Q0v0I0^050#0w0W0C1L0-0/011P1R1T1R0I1Z1#1X0I0w0F0H121Y0P1y0I0v0*150t0V0d0k0:0E011%1N010X0%0C0k1d0C1X2224291)2c1#2f0s2h040a0J0S0P0F0V0F0t0i181a0Z200P0P0C0K2C1q2j0k1y0m1~2O0I1|1{1}0H2l0:1T0k2e2z1X1I1K0+1(2Y0i2!0k1^1J1X0V2H1y2M2O2_0{231a2*2a2/0P0 0W0^0h2L2}0_2|2k2 1)31330^0E3724392M2X013e0d34040T3i2N0`3l3c0:3o3q0z3t3k2}3m3z0^0Q3C1z2@1q2(2R0H2V3m0K1^2r0Y1J1y2?0C2^383J3S0Z3!3b1M1)0j0^0Z0X3J3w3+0:0O0^0J3;3E3x3n0X0^0s0u0W0=0V1T0C3{3*2+010@040M482~3?3n0^0k0w2H361r3#3=4a4c0b3C3`4q304j4l0C3h4o3j3a4g4r0^0f0c3C060J4M4v3|4h0k0^2H0|430d0I4u4E3m0F0^0q4Y4w1)0s0i0^0L4K4N4O492a3-040X0F0P4(4P4a4R040i4|4=1)0F3^500k524F300w4S240e474C2N4Z3}4c4e5h3)5a3d4y4m4f3m4c4I4/4:4N5j4Q4S1o420#4X5n4;5p0:4#044%5H5A4~5C4U5F594!0^0D5U3}4 4k2H4B2_4L5z4)0:4@2H0I0u0P585O5+4i044T5E4W4K1q3%3Z3K600m3N1q0I3P652T2P1@1_2R0d1!623N1w5o3m2H0s0R0X0d0j0C0R0v0T0^1i1k1m1o0J4J5n1z391x0N1a0,0k0e0d5f2u0B1~190b0J1#0*100d2J0l2H3`5 046B6#0J242/0k0K1$6T0H0p0w170J0H000u1a1!0F0K6@002-0t2S0u2J0i190t0x6D6i0y2D0F2B6@196~6T2S0F0u0r0C0P0J0n6S0d0J2c2D6z1-2!0)1m0i200~2e6-0k0I0J237p1#0)0s0F0I0t0G0+0p0)056#0i3:0m6#6R7W3T040O1P1#5~7(7$6#4_4{7!7(0J7l6!7(3/7-3(0J0M2e2S1$0d174T0x870f791D39630!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,:êag)LR1iknè/Sé=vmsuhb.4;ye62o-dt c(wr5_P3qplf050H0C0I0e0k0U0u0J0K0U0e0u0u0r010I0k0T010406050u0v0t0t0e0N0B040p0F0U0v0:0F0m0J020e0t0T0A0J0i0C0}0N0S0v0C0u050o0`0|0~100^0T041o1v051y0o1y1A1v0^0H0k0s0(0*0,0.0w0k0f0w0U1O0w0I0?050Z0x0U0C1J0+0-011N1P1R1P0I1X1Z1V0I0x0F0H101W0N1w0I0w0(130u0T0e0m0.0E011#1L010V0#0C0m1b0C1V2022271%2a1Z2d0t2f040a0J0Q0N0F0T0F0u0k16180X1~0N0N0C0K2A1o2h0m1w0o1|2M0I1`1_1{0H2j0.1R0m2c2x1V1G1I0)1$2W0k2Y0m1?1H1V0T2F1w2K2M2@0_21182(282-0N0}0U0?0j2J2{0@2`2i2}1%2 310?0E3522372K2V013c0e32040R3g2L0^3j3a0.3m3o0z3r3i2{3k3x0?0O3A3t3C3v3l0F303n0?0D3A1x2=1o2$2P0H2T3k0K1?2p0W1H1w2;0C2?363R3!0X3,391K1%0l0?0X0V3R3u3?0.0M0?0J3|3J3~3l0V0?0T140u0P0f0N220H433=2)010=040L4h2|450m0?0e4o3k4l0b3A423}4j4r040x4u3K4l0g0c3H060J4M4z444j3^040k3{1p364O4i2~4s4y384p4j0F0?020f0I0A4#4A4Z4D4F454l4J4V3h4L4N4}4$3k4R2F0I0v0N0m4/4P4;4t4`3s4~4:3@0?0C0$0C4?4j4^3H4}5d585f045254565b044X4%4;4E5w0^0o3/3+3S5G0o3V1o0I3X5L2R2N1=1@2P0e1Y5I3V1u3;5z1%2F0t0P0V0e0l0C0P0w0R0?1g1i1k1m0J4_2_1B371v0h000C2E0C540J0s0k2c0I0J0H0v0J5)2z0J5?0J1Z0J0u0F0v0u0G1Y0F0K0J0e2;0n0%055F045h0u0C4_6y690F6e0d2Q1!2+0X0m0I0q0b690q0K3n0q0y425{5Y5~6m0e0f1!0s62686g0U00170J150#0k6B6f0v0e6J0J1m210K5@2w630v2Y0J6L676`0k170y1x375J0Y0!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:,ag)1ikn/S=vmsuhb4ye[+2odt c0(w]r5_P3plf050A0v0B0d0h0O0p0C0D0O0d0p0p0m010B0h0N010406050p0q0o0o0d0I0u040l0z0O0q0*0z0j050k0;0?0^0`0/0N04131a051d0k1d1f1a0/0A0h0n0Y0!0$0(0r0h0e0r0O1t0r0B0-050T0s0O0v1o0#0%011s1u1w1u0B1C1E1A0B0s0z0A0`1B0I1b0B0r0Y0}0p0N0d0j0(0y011G1q010P0V0v0j0d0o0v1A1(1*1/1I1=1E1^1`0-0a0C0L0I0z0N0z0p0h100j0C0R1$0I0I0v0D2f131}0j1b0k1!2s0B1Y1X1Z0A1 0(1w0j1@2c1A1l1n0Z1H2C0h2E0j1U1m1A0N2l1b2q2s2W0:1)2g2K1:2P0I0@0O0-0g2p2!0.2Z1~2$1I2(2*0-0y2.1*2:2q2B012^0d2+040M2|2r0/2 2?0(32340t372~2!303d0-0J3g1c2U132I2v0A2z300D1U1{1b3r1e3p2Y142/053w0R2V3i3b010i0-0R0P3n3a1p1I0G0-0C3R3K3T3c0P0-0p0z0?0v0K2N1l0D0v0p0K1)0h0I0p3Y2=3!010,040F3`2#3|0j0-1P0v0d0q41303~0f0b3g060C4h3X3S2L310-2l0;0O0T0B3g4j3Z4l0z0-0m4t2;424l0o0h0-0E4f4i4u3{4l3N040P0z0I4A4k2%0-0h4S4v1:0z3V042N4X4L1:3~0w4a3L4E4G4-3|3~0c4(4C1:4/042{3E2}4B4b0-4@4~2r4K4_1I4{3f543J4)1I3~0H4e5b4g4J4i503L44044o0q4q0d4s5b56304x044z5v5m434n3:5r4r4^5x0-0x5I5n450d1D47495b5C4l4+4;4l5o4W5T4T5e0-0H4I5l5$0(4N2l0B0q0I125B5,4m5p5F5s5u2W0/0k3H0v2s2T623q1m3s2v2x2t1T1V2v5P1E2s3r5 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:,êag)R1iknè/àSAé=vmsuhb.4;y7e[+2o-dt c0(w]r5_P3qplf050K0E0L0e0j0Z0v0M0N0Z0e0v0v0s010L0j0Y010406050v0w0u0u0e0S0C040p0I0Z0w0^0I0l0M020e0u0Y0B0M0h0E120S0X0w0E0v050n0 1113150}0Y041t1A051D0n1D1F1A0}0K0j0t0-0/0;0?0x0j0f0x0Z1T0x0L0{050(0y0Z0E1O0:0=011S1U1W1U0L1$1(1!0L0y0I0K151#0S1B0L0x0-180v0Y0e0l0?0H011*1Q010!0*0E0l1g0E1!25272c1,2f1(2i0u2k040a0M0V0S0I0Y0I0v0j1b1d0$230S0S0E0N2F1t2m0l1B0n212R0L1 1~200K2o0?1W0l2h2C1!1L1N0.1+2#0j2%0l1{1M1!0Y2K1B2P2R2|0~261d2-2d2=0S120Z0{0i2O300|2 2n321,34360{0H3a273c2P2!013h0e37040W3l2Q0}3o3f0?3r3t0A3w3n303p3C0{0T3F1C2`1t2+2U0K2Y3p0N1{2u0#1M1B2_0E2{3b3M3V0$3%3e1P1,0k0{0$0!3M3z3.0?0Q0{0M3@3H3A3q0!0{0v0I110E0U3#0u0j0E0S0v0U2h0^4c1s1u3(3^2.010`040P3~3-4n0l0{0l4s313_4o0{0g0b3F060M4H3}4m330{2K0 0Z0(0L3F4J3 4A0I0{0s4S3d4z4n4a0{0O4F4I4T4t2d3:040!0I0S4Z4K3g0{0j4@4U4n0I3{042:4|4-3g0y4M270f0E4y3p4p4r4k3m4!3p4%04395f2Q5h404p0c534#4L044x5m044,5t1,4W040G5s5i0j385b5p4C4E5x4G4+4I5o4A4v044N0w4P0e4R5x5z3p5C4Y5!5R4u4M1r5W4Q5F405C5E5)4^3B4`4*5Q5^014/2K0L0w0S5w2|5#405T5V5X5Z654I0}0n3*3$3N6h0n3Q1t0L3S6m2W2S1`1|2U0e1%6j3Q1z3,5A0?2K0u0U0!0e0k470x0W0{1l1n1p1r0M5M2~1G3c1D6g5U585a6f3W5y0K0I2E0M0d2V1)0 1M0j0M2H262K0l210m0v1r0c23460M0w2%0M4;0l2M0j1c0z1C3c2+3p0e0K0u1c2E781d0Q130l2:0f0{1z7e7g7i2F0J0^0L1@040V133V620,0K00720M1?0E0e0w0M6@0M2:1L0N6Q0I7O7Q0t3s0E7F7b6z0q1=4g7k0M0o0M73260,3V0l750K2K0M1(7P7D7W4d6=7I1d7L7N7}0S7R0l7T6}0M1p6;1a0*0j6|3}6X0S6Z1t6X7P7 0M0r0l100r2K871(0,7S0j7U0v0b6e1D7d401.1V1X1Z3!3O6T2~6X5*5u1$5:4V4X8V4n4p0F5J4A5j3v5x8S1,5q8Y2d5j3E8*5}8-5@4}8/5H043k8=8_8,0{5r8^540?5j0D8$8Z0{0R4F8+5_5U5-6a8.5B8X936B015j4)5N9d5~0{4;4?9l3I5`9w5;50529z5S566Y0l59982d5d9J550{2r9M0?9L8~943q0{8U9T9m4p0g4D4S664A0N0i0{037R7P6^2Z0 0N8C2D0t1m4g7{6Q7Z1(7F0M0O6~0i6~0H6~8)2|5O4H9r689g5/9D4~9k65ac5,4Oafaj5}5=9i9e9X2~8?0{8#9Y9x519Q4B049b9q6#3+6i2R6l1I6V040%9|867E807H7J847X130M9~7#4d6~8d0M0S0r0N0w0Y0m7`0L8q7.a:620-0x0e6P8r0Z0r2t6_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;0w9?1r9^9`b08yaY7!a00W6~0Aa56~975N4+ak9fambTag2dbVcm4_cjbSbjb.b*0{5?bKazb-3x8n6$aI3P3Z6e6y3P0%0)0+04.