Les durées - Soustraction de deux durées

Série d'exercices

Cet exercice fait partie d'une série :

Les durées peuvent être exprimées en secondes, en minutes-secondes, ou en heures-minutes-secondes.

Ainsi, une durée de 23 652 secondes peut aussi être exprimée par :

Différents formats
secondes = 23652
minutes_secondes = (394, 12)
heures_minutes_secondes = (6, 34, 12)

On souhaite créer une fonction permettant de soustraire deux durées, exprimée en heures, minutes et secondes.

Il est à noter que la durée à soustraire doit être inférieure à la durée initiale.

Les deux questions sont indépendantes.

Fonctions fournies

Pour l'ensemble de l'exercice, les deux fonctions suivantes sont chargées en mémoire :

  • la fonction convertir_en_h_min_sec qui prend en paramètre une durée exprimée en secondes et qui renvoie la durée exprimée en heures, minutes et secondes,
Exemple
>>> convertir_en_h_min_sec(23652)
(6, 34, 12)
>>> convertir_en_h_min_sec(0)
(0, 0, 0)
  • la fonction convertir_en_secondes qui prend en paramètre duree (un tuple de trois entiers représentant la durée en heures-minutes-secondes) et renvoie le nombre total de secondes.
Exemple
>>> duree_a_convertir = (1, 25, 50)
>>> convertir_en_secondes(duree_a_convertir)
5150
>>> convertir_en_secondes((6, 34, 12))
23652
1. Fonction est_plus_petite

Écrire la fonction est_plus_petite qui prend en paramètre deux durées duree_1 et duree_2 exprimées en heures, minutes et secondes et renvoie True si duree_1 est plus grande que duree_2, et False sinon.

Exemple
>>> est_plus_grande((1, 12, 30), (2, 5, 4))
False
>>> est_plus_grande((3, 12, 30), (2, 5, 4))
True

###(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,n w(em=p)rhkuois;cb/S1vt_dg:ay2Pfl050B0g0z0E0q0J0r0d0t0J0E0r0r0i010z0q0j010406050r0o0h0h0E0l0F040w0p0J0o0!0p0c050v0+0-0/0;0)0j040}1405170v1719140)0B0q0y0S0U0W0Y0m0q0C0m0J1n0m0z0%050N0u0J0g1i0V0X011m1o1q1o0z1w1y1u0z0u0p0B0;1v0l150z0m0S0@0r0j0E0c0Y0G011A1k010I0P0g0c0E0h0g1u1Y1!1)1C1,1y1/1;0%0a0d0H0l0p0j0p0r0q0`0c0d0L1W0l0l0g0t290}1@0c150v1U2m0z1S1R1T0B1_0Y1q0c1.261u1f1h0T1B2w0q2y0c1O1g1u0j2f152k2m2Q0*1Z2a2E1*2J0l0.0J0%0x2j2U0(2T1^2W1C2Y2!0%0G2(1!2m2N0g2m2C2p0B2t2v010t1O1=152|182O2+2l2?3a320L2P2U300n0%0L0I3b3f2,1j1C0e0%0d3m39300c0I0%0g0r0z0A0j0^0r0A0C0l1!0L3u2k300$040f3M3g2-0Y0c3j0o2f0g0A2%0~2)3v3U013P0b3m3t3N3*3W040B3Y0g3!2=3%2@3)3p0Y3P0k0D3m060d463/3T3 013i042f0z3Y0|3|2l483o2F013=320c0y0g0l0!0l0A1.0A0r2g0{0L0r3S4l1*3P3R4i3n2V4a3=3@3Z3#4E4L4m413.3~4m0p0%020C0z0s0i4V3:4M0%4p4r4t0q4v4x4z4p4C4R3O0%4I2S4*4m4N3^3`4_3*4U4J0)0v3d2`16380v362n2~0}2q2p1N1P2p0E1x5a5d1g2*5d0M0O0Q04.
2. Test de la fontion

Écrire la fonction soustraire_durees qui prend en paramètre deux durées duree_1 et duree_2 exprimées en heures, minutes et secondes et renvoie la différence entre les deux durées, exprimée en heures, minutes et secondes.

On ajoutera une assertion pour vérifier que la durée à soustraire est bien inférieure à la durée initiale

Exemple
>>> soustraire_durees((3, 12, 30), (2, 5, 4))
(1, 7, 26)

###(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,n -w(e3m=p)rhkuoiscb/TS1vt_dg:ay24Pfl050D0h0B0G0s0M0t0d0u0M0G0t0t0k010B0s0l010406050t0q0j0j0G0n0H040y0r0M0q0%0r0c050w0.0:0=0@0,0l041017051a0w1a1c170,0D0s0A0V0X0Z0#0o0s0E0o0M1q0o0B0*050Q0v0M0h1l0Y0!011p1r1t1r0B1z1B1x0B0v0r0D0@1y0n180B0o0V0`0t0l0G0c0#0I011D1n010L0S0h0c0G0j0h1x1#1%1,1F1/1B1=1@0*0a0d0K0n0r0l0r0t0s0}0c0d0O1Z0n0n0h0u2c101`0c180w1X2p0B1V1U1W0D1|0#1t0c1;291x1i1k0W1E2z0s2B0c1R1j1x0l2i182n2p2T0-1$2d2H1-2M0n0;0M0*0z2m2X0+2W1{2Z1F2#2%0*0I2+1%2-2n2y012=0G2(040i2_2o0,2|2:0#2 310J342p2Q0h2p2F2s0D2w2}0u1R1^183i1b2R2.2o3d053n0O2S2X2}0p0*0O0L3w371m1F0f0*0d3H3B382~0L0*0t0r0q0t2t0R2i0C0D0q2i0h0t3O2/3J0#0)040g3+2Y3-2~3E3%0h0h0C2*112,3u2}3/0b3d3N3I2I3^043$3(0C2^3 2`413Q3/0m0F3d060d4o463P3@3D041E0h0n0B454h3@0c0*3)0B0C0l0{0t0C0E0n1%0O3=420*3;4f3v472!3_4c3~2V4V1F434z4#394X3{4d4P4i0*0m4(4r480r3L040s3*4T044q3,480p0u0*0x0n0q0h4m4p4 3?484C043U0:3|0t2j0~0O4|2T5b2}0r0*0k4=504W043n0c0A4w0%0n0C1;0C5j5y5m4.3@3/4S4!4?5w4b4,4Z404)014j5u5c1-5r040e5Y2}5e5y5A4x0s5D5F5H5l3)5K485M5@5Q3`3|4e5O5v4$4:450d4n4p4A510*2i0B3%0 4}5p3Q5*0~5,5C5E0c0C0o0C0j2K5G2j5`613:6u4*5f0r5h6s5I5?4}671-5X4}0,0w3y3g193t0w3r2q3k102t2s1Q1S2s0G1A6N6Q1j2-6Q0P0R0T04.