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
.128013t=8fw2mP751:,cSsékM /n9qiyh_oa-v4pu(jBr]{[63;0dg)}+elbàCx.050V0!0b0E0z0#0q0u0o0#0E0q0q0c010b0z0I010406050q0J0h0h0E0N0A040p0D0#0J0~0D0w050v1517191b130I04051r1k1u0v1r130V0z0G0?0^0`0|0^0w0W0J0E0W0!0F0I0A0b0B1i0u0B0z0W0B0#1W0B0b11050.0$0#0!1D0_0{011V1X1Z1X0b1)1+1%0b0N1s1R0?1e0q0I0E0w0|0g011-1F010e0:0!0w0E0h0!1%2224291/2c1+2f2h110a0u0i0N0D0I0D0q0z1h0w0u0,200N0N0!0o2C1k2k0w1s0v1R2P1|1~1}1(0V2m1G0z0w2e2z1%1A1C0@1.2Z2#0w0D2)1%0I2I1s2N2P2_14232D2+2a2/0N180#1%0E1U2I0e0|030C0C0o2:0!1Z2.0D0F0l3k110u0l1k0E2`2}122|2l2 1/313335370!39013b3d3f3h2$3k0F27040u0g3q3s243u2N2Y013z0E341s360B383a3c3e0,3J2/3L0S3n0S3R2M3t133V3x0|3Y3!053$3(3F3*3I2!3K3l0H3n0H3?1l3^3v2~1E3y0D323Z3B3%3D3)3H3,453.3l0k3n0k4b2_3_2}3W3}4l413G3+3g4r3j3l0R3n0R4x4d3`4g3|4i3A3#3C3E4F443i3L0j3n0j4O3T4z3w4R3X4T4k4V4m4X434q4!3l0d3n0d4)2O4+4f2,4.4j3~404n424p4H4_0F0x3n0x4~3U4A3{534U3 4W4o4G3-4J3k0U110l0U5g504B4/555n585p4I3L0l0l5u3p0v3r3@4*4e5z544D574Y4^463k3N0l3Q5L3S4 5P5j4C4;4E4@5a5W0l3:045:5x5(4-5*5m4=5o4Z5/485=4a5#5N5%4Q525`564?595q5G4u5=4w634c5O66305A5S6a5E5b0l4L5=4N6h4y5^676m5+5T5-6c3l0l4$5=4(6v4P5i5_6z5{5,6b5F6E4{5=4}6J6j6L6y5R6A6o5~4s3k5d5=5f6W656Y6l6!6O6B6Q5b0g5t046_5@6k4h6;695}5V6(0g5I6{5K5M6i6.4,6Z5l715D6%5r0g3N7j5g1v2@1k2)2S0V1~2X5j4G2(1B1s2?0!2^3t641s4G7C2l0z0V0|3c2N5G3B7J7L6@5/282q0!7R6p7T2P5M6~0|0s113x7E6x2a0f3n7+7$3X0o110M3Z1+7:6/1/10040m7E137a7H2D7Q017M2}3L3N5m866C6R3M7U2g7W877S741%637;7.3O0u8s7{7c2a0q0V1102030S0x0T8A8C8E8B8D0(4g1,2y0J0N2E0r2c0w0z8P0J2#0u0$7_1,0W0N0E0I1V0y0J0!8F8D8.8H8G818u857K8k7N3l5;8c8_8e5b3:0u7V7X7h3/8n3r8s8t7;0w7)0D0J1+8O7E0u7,1/0D110c9j9l0|7~0P8@3W0q3N028+0D0b0T2w0J1M9z0J9B0T9v5j7~0m0K9L4-0h0z110g0k6g2{7;7~0n9Q529S115w839r019!9$2a9(049*9Y7|9s110X9#839k7;9x8z9A9C0G0!0N0b9H9J9/7}119Oaa0|9;9?7D9Z119|9@8v1/9;9V9Xai9^9-akae01agaw7~9{9q9 9ya20T1*0!0Ja89Cazac9P9+7;ayaPat9.aSanaf9T9=aM04alasaWaxaYaqa!0X0Y8?aV8^7R8{0F608~95735r48938ia`5.6(a^5#9a9~at7(040,0eaw8q9ka:3W0e0h113c2!2B3ca!aOam512a0$7~0q3gbbbf9Mav9}9,9d043e9gaI0Na,808382bq0u8d0Ca?6ea_8k7Y6(4ua~2hb06D0FbSb4b59a9,bt11bv0#bxbN5j9n040*awbDbF9hbIbB7;b?9pb~atb`9fb|a/bNbPa?6sbT905W4LbY8jcd6(cbb(b)b6a(b,04b.b:a%br9m11b^by5_110)aCatc0cCa(9;5vah5Obfc9893l6Gcc8l5r4$cgb!8fcPclb)b+bubwawb?cxb;cz040AcFcu0|cEc2cGaYcIc7ctbO8 bQcN0F6TcQbV5r4{cUbU964`983ucLc|a?6*d1d75c8hbZd6a{3LdecY9,b8babc7/cy670e110,0I0^0oa5boawcpcrbJc_3T5PcM245G6`dfdl6E5td5ci5r5vd99,bdcmbec*528x8z8I8;8/d*0t0zbv0u0%0u0L9f8P2F0^0u2y2A2C2E1,d{8Z0#1+d|19bO0w0o0N0r2h0w0.d 0,0=3e4i0V1i0w0r0!0q8:erd*dI2OdKdcc~5H7Pc|d25G5IdTcReDd9d!cnc/01dFc$du2ac(b_cAc.3Wb?0Zc12_eK3WcHeu84c{a=ey8b36bPeC6E27eFe/5XeId!c!b-eOd$eQcweSc,eUb=11eXf29Rc@e%ewe*dM6E8}e-eBdg5:dicheGfdd9bMc`dL0w5Ga^ffcV6qa}94dkb1dVb399b*7;dq3Dds3OawbhbjbQ1|bnePab04bpc`5jeNb/dHbL9vfq6deAfv5/bXfydUf$7!8rcmdp112I0b8O1jc=eLa004aK0T0i2z2B0z1Td`36e3e50m0uf~c%f4b_0$b-1|dDfQ0|fWcsdJb e gj3XeTgqaAgc040Zawf|f~0ngaaFgvgxgq0wgfcqghgt11fTgnatglgvc)fUc+c-gL040Xf93Vf#6Ecbfufzb#6rfjf(6(g+f.fogO7Iexfc3kcPg(f,6EcTf+flg_dX7;0o76030(eb0Eeg1,1|0Dd/8Y8!0=2Fb{bHhh0z0e0e0r2IeeepgZ4Ag#3kd0g{h00ld4g e?hAh2c311g7hsf`eV9of6527~0Qf07^e40!gie}1/gzaFaHaJgDgWaBhK5)7@8!hVgTd%aE9I9C9E9Gh$hW9_gXa$3Te!h*04hS7`gWgNevaDa1h;0Ta4a6gbh%0Ohtg?fbfr6EdehyhD5de=fhdn3rg;i5hug@ii3MdOildg6_g,g)8fiBf.f;040e4ihN30110ziL9m8q2!iP3|gI8%1IhUi3aw9;3=h%bK6wdbih8a76dPfAi,iCg|3Mi-do9chHhga!hQgGiNa!iegqeRi~b90!dz0EdBb}h_aufSgYfZi*8`c~7jf%iD6^e;hCiA8b8oc3gI2?2!0bh-g=eLbDhI0qi|i!aYcJita(7~0Ojei)2{0v7G7n7B7p7y1k0b7sjU2V2Q0EaH2P7q820,0.0:0q04.

A vous de jouer...⚓︎

Crédits⚓︎

Page écrite par Pierre Marquestaut