Les durées en POO (1)

On s'intéresse dans cet exercice à une classe Duree permettant de manipuler une durée exprimée en heures, minutes et secondes.

Un objet de type Duree est instancié en indiquant les heures, les minutes et les secondes nécessaires.

🐍 Console Python
>>> duree_1 = Duree(2, 45, 52)
>>> duree_1.heures
2
>>> duree_1.minutes
45
>>> duree_1.secondes
52

Les secondes et les minutes d'une durée doivent être strictement inférieures à 60. Lors de l'instanciation les valeurs passées en paramètres doivent respecter cette règle.

La méthode en_secondes renvoie la durée correspondante exprimée en secondes. Cette méthode calcule et renvoie la durée exprimée en secondes mais ne modifie pas les valeurs des attributs heures, minutes et secondes.

Les méthodes ajoute_minutes et ajoute_secondes permettent d'ajouter respectivement un nombre de minutes ou de secondes positif ou nul passé en paramètre. Si, après l'addition, les minutes (ou les secondes) de l'objet dépassent 59, on doit les convertir en heures (ou en minutes).

Exemples
>>> duree_0 = Duree(0, 0, 0)
>>> duree_0.en_secondes()
0
>>> duree_0.ajoute_minutes(12)
>>> duree_0.en_secondes()
720
>>> duree_0.ajoute_secondes(3600)
>>> duree_0.en_secondes()
4320
>>> duree_1 = Duree(2, 45, 52)
>>> duree_1.en_secondes()
9952
>>> duree_1.ajoute_secondes(20)
>>> duree_1.en_secondes()
9972
>>> duree_1.ajoute_minutes(30)
>>> duree_1.en_secondes()
11772
Astuce

La méthode ajoute_secondes pourra utiliser la méthode ajoute_minutes

__repr__ ?

La méthode __repr__() est une méthode native qui est appelée lorsque l'on souhaite afficher une représentation de l'objet (dans la console le plus souvent). Dans le cas présent, cette méthode est aussi appelée lorsque l'on souhaite convertir un objet de ype Duree en une chaine de caractères (par exemple, lors de l'appel de la fonction print). Cette méthode renvoie une chaine de caractères sous la forme "hh:mm:ss". Par exemple, pour un objet initialisé avec les valeurs 3 h, 20 min et 2 s, la méthode renvoie '3:20:2'

Compléter 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
Évaluations restantes : 10/10
.128013s3_8èufvy n7aS1me(P2C4:jtwiDh*)6Oo;bcdg/0lqAp.r,}=+k%{95Rxé050M0r0z0n0B0Q0b0k0L0Q0n0b0b0Y010z0B0T010406050b0g0q0q0n0V0j040o0I0Q0g0 0I0l0k020n0q0T0J0k0)0r190V0R0g0r0b050O16181a1c140T041A1H051K0O1K1M1H140M0B0i0@0_0{0}0D0B0N0D0Q1!0D0z12050/0K0Q0r1V0`0|011Z1#1%1#0z1-1/1+0z0K0I0M1c1,0V1I0z0D0@1f0b0T0n0l0}0u011;1X010h0;0r0l1n0r1+2c2e2j1?2m1/2p0q2r040a0k0t0V0I0T0I0b0B1i1k0-2a0V0V0r0L2M1A2t0l1I0O282Y0z2625270M2v0}1%0l2o2J1+1S1U0^1=2,0B2.0l221T1+0T2R1I2W2Y33152d1k2@2k2|0V190Q120k0p2V3713362u391?3b3d3f0u3i2e3k2W2+013p0n3e040k0c3t2X143w3n0}3z3B0k0w3F3v373x3L3f0(3P3H3R3J3y0I3c3A3f0G3W3l381W3o3#3q3C0m3*3I3-3K3/3%3C0e3?3Y3^3!3$3M0%3~3m403T040p0P453,2^413:0p3h1B3j3X464e480p3s4j3u4l4d3a3`3B0p3E4r3G3+3S4w120p3O4A3Q4m4v424F3V4I4t4D4M493)4P4C3Z4o3=4V3@4n4E493}4!3 4$4S0p444*4K3.4S0u4b4I1J311A2=2#0M2)3x0L222B0,1T1I300r323j3P05520-5a4;0}0!123n5c4#2k0A3f5m4+3a0L120C0g2R0r5r5h0111040x3W0k5H0k4W405j040-0h5A4u1?5p3C5Q3x0h0q120d0d2`2L5!5V3Z5D0s5)400K5D0b0r0Q5P4_5n1?5D0W3P5J5_3K120D5-4e5{5}5K4n120q632k654I5~5s3o121z5^6g0}5D0F5F4P5I6r6f5B5M1=0r0V0z665 010q0B124^336t5R0}0I12020Q0z0J0Y6A6l3y696S5B6L046N6P6W6J6C6E040G6G3j6I3x0I5T2e0M6$3x6D6F6@3Z6Y6!6Q6{476i704e6}6O0J732k6_6*6,4s6s5I672k5/6i5=5@356B6Y0U6b6h040D0r5x1y781?6Y6R6e7g7r626q7e6.3Z7i045;5?7q6K127p6k5B0l692`1h7w7B7n127A6H7C60046a7F7e7%017J7L7l5b7Z047Q7m6T7T7K2S1j0-6j7$7?7#6-7-7{804k066r7-5M5O7N015T5J7R6%0l0h122o0d5;520l7 8e5+8e7/7k8t126o5G7G8b122R0z5x0l7x0}8w7M8i6/7P8e7{7t7v873u7H406Y0E8J6(120c6+7c2X8W74120Z8!8L7;3u7-7o8Q7U0l7W8U8*8?128Z7Y6T7a6+8!6Y8.915B8:8e8@8N4X7j8q8s4P897f6B8c0r8;2X7-8g8Q8l040n0y0I7W0d6D8`0z7X7_5B8u9d5.5:8x9H64125|988j8_8|5g6%6n6p339j7,6B9a9L2k9c9E9Q7s7u2R9S8+9%8-838V7-9G9)3x9#9_6|8P9$7r9A8{958-8!7{9A9S9@8za3040O0O8!938)137G9/1?9{7=6T9(an7S8_a29P8O049=8}6B9^aq6%am8=7?7^aB3Sas9C9.8~0497817`9R8y040Fab0#af6)949i8a9l128d9 0}9ra)3y9t9v9x9C8o7}8r9DaH5*125,a,aD9paz9Na59fa8b0aT9W4kaj7-a~9TavaGaEaQ9u9w9ya1aKaS0sa|9|9I7j8Mbp8,7@8^7|9ga^9?7?aO846B862Sb46T6nabadaX12aZbt6caa7+6sba9Jbsa_8X9~bP7r8p7~bzayao7!8!aAbf99bV9obc9}bva,bFbyaLbBb2bxbH9FbRaP6X12aWau3Zag3W9Yak5ia%9n8ea+b!0}5X5Z0d2R305(a,b-a 6Tbba9b68B9Z6T5M8F8H8!0b0n12b;7-0b2h04018e2K120$8vb:9bbZbX689+8TcM6)0XcMcJb7b.6%cN04cPa}cRa,apc(aI7)7Vbla,c*c!c_c$cYcOcQbrcGaFbwb$a@b c)cZc#12cL4V0O5e594`dg0O4}1A0z4 dl2%2Z21232#0n1.di4}1Gb=402R0q0d0h0n0!0r0d0D0c121s1u1w1y0kc%9p1N3k1H0H1k1y0z0k0B0L0B0k0I1.1!0+0k2O2R0l5;1!2.0V0k0b0j0b0z0+190 dO2A0ldZ1/0?2$0I0B0?2d0V1n0f2$dP0Q3#0?2O0Q002`d{2ed$0n2Md-1:0_2v0r7Q1Q1L1dd%1j0k0i7udZ0L0V0+6x0k0g2.d-5xeJeL0l0Be02odZ2o0kbk1y1Ba?7 d(0g0keX8S2R0Wd!0Q0kdE1h0k0n0ie7d@eM0k2|0q0K2Res0keaecee0?0i1a0Bdu1/0U0kdWf3eF0k1/e;0:f1eX1h0;e82edZ0cf31af59-e*eW1k2m0*freR1:15e60l0N04f81/5xfud@0M0+e=6z1BfHfJex3k2=3x1^1$1(1*dz4e2x2o2q122D0oeH10dZ0t0j281j5c589T345bdff)2k5M5la,cgcU5t5v7v5zcp12dRai9kcycdd26Tg6c;3Zcj045!5$0zcoch5Ca{d07|bWgm406dgu8Rabax5U6B7aahcu9Oc29*7*gNavgGcb8#04gKb5gMbDbgb{b*awbMgVaS8AbSa#csc.guc:crarcW9-gFb}7E9Xb99!g/g77ycTgAcVeZg#c3g%c6717)cwbTg~d1cSb@gD9fb%h66%7zb}9S14de532Yf|4|56dy0Sem0Be.eC0Tfh2o162L1:eHeJe{eNem0/0l0L1:e^2S0ke6e8e@0V0N17eV0?6peyfZ3Zf#1`1)2s6Tf+2z2B2D0v1j0b1f1:f@f_8I4_hu354_g07-0N5D020N6Pi7i9i81qbw6?h9bugS85g95ybm8e7a4igugCgZ5B7a0u4Oiqb1ig796)0(gWbIc14ki4i6icia0JiK8hhi5N4c3x0N6Y0p290x0kiv0qdQ0kiChp1Ai31N4{djhwez9xe@eE0Ld^7u1/e1dZ0-0g0*hXhZi_h$1JfY1Tf!1(h,f(7-h:f-2C0kh@d:h`2Ef^0Df`h 4{i135i36Bi56MiJjt6PiNh07(ifgQb?iibEik0rgbix04bojxgU4qjHgYbA926)4@g*iQ3Zjr6ZjuiLicjwh33aa%jU40iS12000uiViX0Pj/0P0b003*hr5fdh2Ydxez0C2e0?hQ0@0`e.fjf40qedf15dhs6jg0f3d/2*eufL9,fOd-fR0ne?kc2Oh*j6f%h.it6)gKj`59fXdyffhDe?2o2m1k300+d$5;d@e4fOfwdPdOfi00eCd/d;0NeNh%j32?40h+kvg12w2nh;f.jdh^jgh|jjh~35i05bi2hsiHjsibl0idb^j(izh1h8jAha5wilgcjIbwgPishmb+l50}7a0wiDc0aTj)4ejWiKltj!ielq2kj+04000P0k0DiWlmiZiWj?j^ddi)hui,0idU04k0d:0@1:0-0VeSeK0Lk5fidPk8kadPkr597Ekf0.5Jg0kehskg2o2{e30neD3AkleaknfSl:53j51_k*7-gJ5ckAb@eydj0.0:0=04.
Partie 2

Pour la manipulation avancée des durées, on peut faire cet exercice.