Aller au contenu

Debbugage

Découverte des exceptions⚓︎

Travail à faire

Chaque programme ci-dessous présente une erreur engendrant une exception.

Pour chaque programme :

  • Identifier l'erreur générée en exécutant le code ;
  • Décrire succintement la nature de l'erreur ;
  • Proposer une correction pour le programme puisse s'exécuter
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

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

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

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

Programme 5

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

Programme 6

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

Programme 7

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

Mise en pratique⚓︎

Le programme suivant présente de nombreux bugs.

class Balle:
    '''Classe pour définir une balle graphique'''
    couleur = {"rouge":(255,0,0), "vert":(0,255,0), "bleu":(0,0,255)}
    def __init__(self, couleur):
        self.couleur = couleur
        self.x = 100
        self.y = 100

    def deplacer(self):
        '''Mise à jour de la position de la balle par incrémentation des coordonnées'''
        x += 1
        y += 1

    def __str__(self):
        return "Position de la balle : "+self.x+", "+self.y

#Création de trois balles de couleurs différentes
balles = [Ballon("jaune"), Ballon("rouge"), Ballon("vert")]

for i in range(4):
    balles[i].deplace()
print(balles[0])   

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

###(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
.128013]ik[v8oB-)yqxb.+g=m}4rsM97f,{d :C5hwtcl0p_P3(a;j/àeS612énu050E0Z0L0U0c0N0x0F0M0N0U0x0x0s010L0c0P010406050x0*0t0t0U0w0l040!0h0N0*0~0h0)050X1517191b130P04051r1k1u0X1r130E0c0f0?0^0`0|0^0)0r0*0U0r0Z0j0P0l0L0J1i0F0J0c0r0J0N1W0J0L11050.0o0N0Z1D0_0{011V1X1Z1X0L1)1+1%0L0w1s1R0?1e0x0P0U0)0|0%011-1F010B0:0Z0)0U0t0Z1%2224291/2c1+2f2h110a0F0R0w0h0P0h0x0c1h0)0F0,200w0w0Z0M2C1k2k0)1s0X1R2P1|1~1}1(0E2m1G0c0)2e2z1%1A1C0@1.2Z2#0)0h2)1%0P2I1s2N2P2_14232D2+2a2/0w180N1%0U1U2I0B0|030Q0Q0M2:0Z1Z2.0h0j0$3k110F0$1k0U2`2}122|2l2 1/313335370Z39013b3d3f3h2$3k0j27040F0%3q3s243u2N2Y013z0U341s360J383a3c3e0,3J2/3L0S3n0S3R2M3t133V3x0|3Y3!053$3(3F3*3I2!3K3l0v3n0v3?1l3^3v2~1E3y0h323Z3B3%3D3)3H3,453.3l0I3n0I4b2_3_2}3W3}4l413G3+3g4r3j3l0#3n0#4x4d3`4g3|4i3A3#3C3E4F443i3L0A3n0A4O3T4z3w4R3X4T4k4V4m4X434q4!3l0g3n0g4)2O4+4f2,4.4j3~404n424p4H4_0j0z3n0z4~3U4A3{534U3 4W4o4G3-4J3k0O110$0O5g504B4/555n585p4I3L0$0$5u3p0X3r3@4*4e5z544D574Y4^463k3N0$3Q5L3S4 5P5j4C4;4E4@5a5W0$3:045:5x5(4-5*5m4=5o4Z5/485=4a5#5N5%4Q525`564?595q5G4u5=4w634c5O66305A5S6a5E5b0$4L5=4N6h4y5^676m5+5T5-6c3l0$4$5=4(6v4P5i5_6z5{5,6b5F6E4{5=4}6J6j6L6y5R6A6o5~4s3k5d5=5f6W656Y6l6!6O6B6Q5b0%5t046_5@6k4h6;695}5V6(0%5I6{5K5M6i6.4,6Z5l715D6%5r0%3N7j5g1v2@1k2)2S0E1~2X5j4G2(1B1s2?0Z2^3t641s4G7C2l0c0E0|3c2N5G3B7J7L6@5/282q0Z7R6p7T2P5M6~0|0d113x7E6x2a0K3n7+7$3X0M110i3Z1+7:6/1/10040G7E137a7H2D7Q017M2}3L3N5m866C6R3M7U2g7W877S741%637;7.3O0F8s7{7c2a0x0E1102030S0z0V8A8C8E8B8D0H4g1,2y0*0w2E0(2c0)0c8P0*2#0F0o7_1,0r0w0U0P1V0m0*0Z8F8D8.8H8G818u857K8k7N3l5;8c8_8e5b3:0F7V7X7h3/8n3r8s8t7;0)7)0h0*1+8O7E0F7,1/0h110s9j9l0|7~0D8@3W0x3N028+0h0L0V2w0*1M9z0*9B0V9v5j7~0G0T9L4-0t0c110%0I6g2{7;7~0C9Q529S115w839r019!9$2a9(049*9Y7|9s110k9#839k7;9x8z9A9C0f0Z0w0L9H9J9/7}119Oaa0|9;9?7D9Z119|9@8v1/9;9V9Xai9^9-akae01agaw7~9{9q9 9ya20V1*0Z0*a89Cazac9P9+7;ayaPat9.aSanaf9T9=aM04alasaWaxaYaqa!0k0u8?aV8^7R8{0j608~95735r48938ia`5.6(a^5#9a9~at7(040,0Baw8q9ka:3W0B0t113c2!2B3ca!aOam512a0o7~0x3gbbbf9Mav9}9,9d043e9gaI0wa,808382bq0F8d0Qa?6ea_8k7Y6(4ua~2hb06D0jbSb4b59a9,bt11bv0NbxbN5j9n040pawbDbF9hbIbB7;b?9pb~atb`9fb|a/bNbPa?6sbT905W4LbY8jcd6(cbb(b)b6a(b,04b.b:a%br9m11b^by5_110naCatc0cCa(9;5vah5Obfc9893l6Gcc8l5r4$cgb!8fcPclb)b+bubwawb?cxb;cz040lcFcu0|cEc2cGaYcIc7ctbO8 bQcN0j6TcQbV5r4{cUbU964`983ucLc|a?6*d1d75c8hbZd6a{3LdecY9,b8babc7/cy670B110,0P0^0Ma5boawcpcrbJc_3T5PcM245G6`dfdl6E5td5ci5r5vd99,bdcmbec*528x8z8I8;8/d*0y0cbv0F0Y0F0W9f8P2F0^0F2y2A2C2E1,d{8Z0N1+d|19bO0)0M0w0(2h0)0.d 0,0=3e4i0E1i0)0(0Z0x8:erd*dI2OdKdcc~5H7Pc|d25G5IdTcReDd9d!cnc/01dFc$du2ac(b_cAc.3Wb?0qc12_eK3WcHeu84c{a=ey8b36bPeC6E27eFe/5XeId!c!b-eOd$eQcweSc,eUb=11eXf29Rc@e%ewe*dM6E8}e-eBdg5:dicheGfdd9bMc`dL0)5Ga^ffcV6qa}94dkb1dVb399b*7;dq3Dds3OawbhbjbQ1|bnePab04bpc`5jeNb/dHbL9vfq6deAfv5/bXfydUf$7!8rcmdp112I0L8O1jc=eLa004aK0V0R2z2B0c1Td`36e3e50G0Ff~c%f4b_0ob-1|dDfQ0|fWcsdJb e gj3XeTgqaAgc040qawf|f~0CgaaFgvgxgq0)gfcqghgt11fTgnatglgvc)fUc+c-gL040kf93Vf#6Ecbfufzb#6rfjf(6(g+f.fogO7Iexfc3kcPg(f,6EcTf+flg_dX7;0M76030Heb0Ueg1,1|0hd/8Y8!0=2Fb{bHhh0c0B0B0(2IeeepgZ4Ag#3kd0g{h00$d4g e?hAh2c311g7hsf`eV9of6527~0ef07^e40Zgie}1/gzaFaHaJgDgWaBhK5)7@8!hVgTd%aE9I9C9E9Gh$hW9_gXa$3Te!h*04hS7`gWgNevaDa1h;0Va4a6gbh%0bhtg?fbfr6EdehyhD5de=fhdn3rg;i5hug@ii3MdOildg6_g,g)8fiBf.f;040B4ihN30110ciL9m8q2!iP3|gI8%1IhUi3aw9;3=h%bK6wdbih8a76dPfAi,iCg|3Mi-do9chHhga!hQgGiNa!iegqeRi~b90Zdz0UdBb}h_aufSgYfZi*8`c~7jf%iD6^e;hCiA8b8oc3gI2?2!0Lh-g=eLbDhI0xi|i!aYcJita(7~0bjei)2{0X7G7n7B7p7y1k0L7sjU2V2Q0UaH2P7q820,0.0:0x04.

A vous de jouer...⚓︎

Crédits⚓︎

Page écrite par Pierre Marquestaut