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

.128013so_;bcdufvg/ly napSr1me,(P2=:twkih)050h0x0E0r0H0n0b0p0g0n0r0b0b0C010E0H0s010406050b0i0w0w0r0u0o040t0c0n0i0!0c0q050m0+0-0/0;0)0s040}1405170m1719140)0h0H0k0S0U0W0Y0I0H0l0I0n1n0I0E0%050N0f0n0x1i0V0X011m1o1q1o0E1w1y1u0E0f0c0h0;1v0u150E0I0S0@0b0s0r0q0Y0B011A1k010j0P0x0q0r0w0x1u1Y1!1)1C1,1y1/1;0%0a0p0A0u0c0s0c0b0H0`0q0p0L1W0u0u0x0g290}1@0q150m1U2m0E1S1R1T0h1_0Y1q0q1.261u1f1h0T1B2w0H2y0q1O1g1u0s2f152k2m2Q0*1Z2a2E1*2J0u0.0n0%0v2j2U0(2T1^2W1C2Y2!0%0B2(1!2m2N0x2m2C2p0h2t2v010g1O1=152|182O2+2l2?3a320L2P2U300G0%0L0j3b3f2,1j1C0F0%0p3m39300q0j0%0x0b0E0d0s0^0b0d0l0u1!0L3u2k300$040z3M3g2-0Y0q3j0i2f0x0d2%0~2)3v3U013P0y3m3t3N3*3W040h3Y0x3!2=3%2@3)3p0Y3P0J0D3m060p463/3T3 013i042f0E3Y0|3|2l483o2F013=320q0k0x0u0!0u0d1.0d0b2g0{0L0b3S4l1*3P3R4i3n2V4a3=3@3Z3#4E4L4m413.3~4m0c0%020l0E0e0C4V3:4M0%4p4r4t0H4v4x4z4p4C4R3O0%4I2S4*4m4N3^3`4_3*4U4J0)0m3d2`16380m362n2~0}2q2p1N1P2p0r1x5a5d1g2*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

.128013s3o_bcdufvg/Tly napSr1-me,(P2=4:twkih)050h0z0H0s0K0o0b0q0g0o0s0b0b0E010H0K0t010406050b0i0y0y0s0v0p040u0d0o0i0%0d0r050m0.0:0=0@0,0t041017051a0m1a1c170,0h0K0k0V0X0Z0#0L0K0l0L0o1q0L0H0*050Q0f0o0z1l0Y0!011p1r1t1r0H1z1B1x0H0f0d0h0@1y0v180H0L0V0`0b0t0s0r0#0D011D1n010j0S0z0r0s0y0z1x1#1%1,1F1/1B1=1@0*0a0q0C0v0d0t0d0b0K0}0r0q0O1Z0v0v0z0g2c101`0r180m1X2p0H1V1U1W0h1|0#1t0r1;291x1i1k0W1E2z0K2B0r1R1j1x0t2i182n2p2T0-1$2d2H1-2M0v0;0o0*0w2m2X0+2W1{2Z1F2#2%0*0D2+1%2-2n2y012=0s2(040c2_2o0,2|2:0#2 310F342p2Q0z2p2F2s0h2w2}0g1R1^183i1b2R2.2o3d053n0O2S2X2}0J0*0O0j3w371m1F0I0*0q3H3B382~0j0*0b0d0i0b2t0R2i0e0h0i2i0z0b3O2/3J0#0)040B3+2Y3-2~3E3%0z0z0e2*112,3u2}3/0A3d3N3I2I3^043$3(0e2^3 2`413Q3/0M0G3d060q4o463P3@3D041E0z0v0H454h3@0r0*3)0H0e0t0{0b0e0l0v1%0O3=420*3;4f3v472!3_4c3~2V4V1F434z4#394X3{4d4P4i0*0M4(4r480d3L040K3*4T044q3,480J0g0*0n0v0i0z4m4p4 3?484C043U0:3|0b2j0~0O4|2T5b2}0d0*0E4=504W043n0r0k4w0%0v0e1;0e5j5y5m4.3@3/4S4!4?5w4b4,4Z404)014j5u5c1-5r040x5Y2}5e5y5A4x0K5D5F5H5l3)5K485M5@5Q3`3|4e5O5v4$4:450q4n4p4A510*2i0H3%0 4}5p3Q5*0~5,5C5E0r0e0L0e0y2K5G2j5`613:6u4*5f0d5h6s5I5?4}671-5X4}0,0m3y3g193t0m3r2q3k102t2s1Q1S2s0s1A6N6Q1j2-6Q0P0R0T04.