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

.128013bSu,_l(wn/)paPk;:hors1vc2mgydi fte=050D0I0H0n0E0g0v0F0y0g0n0v0v0J010H0E0m010406050v0d0A0A0n0u0C040c0t0g0d0!0t0j050k0+0-0/0;0)0m040}1405170k1719140)0D0E0x0S0U0W0Y0s0E0B0s0g1n0s0H0%050N0b0g0I1i0V0X011m1o1q1o0H1w1y1u0H0b0t0D0;1v0u150H0s0S0@0v0m0n0j0Y0z011A1k010G0P0I0j0n0A0I1u1Y1!1)1C1,1y1/1;0%0a0F0o0u0t0m0t0v0E0`0j0F0L1W0u0u0I0y290}1@0j150k1U2m0H1S1R1T0D1_0Y1q0j1.261u1f1h0T1B2w0E2y0j1O1g1u0m2f152k2m2Q0*1Z2a2E1*2J0u0.0g0%0w2j2U0(2T1^2W1C2Y2!0%0z2(1!2m2N0I2m2C2p0D2t2v010y1O1=152|182O2+2l2?3a320L2P2U300p0%0L0G3b3f2,1j1C0i0%0F3m39300j0G0%0I0v0H0f0m0^0v0f0B0u1!0L3u2k300$040h3M3g2-0Y0j3j0d2f0I0f2%0~2)3v3U013P0e3m3t3N3*3W040D3Y0I3!2=3%2@3)3p0Y3P0l0r3m060F463/3T3 013i042f0H3Y0|3|2l483o2F013=320j0x0I0u0!0u0f1.0f0v2g0{0L0v3S4l1*3P3R4i3n2V4a3=3@3Z3#4E4L4m413.3~4m0t0%020B0H0q0J4V3:4M0%4p4r4t0E4v4x4z4p4C4R3O0%4I2S4*4m4N3^3`4_3*4U4J0)0k3d2`16380k362n2~0}2q2p1N1P2p0n1x5a5d1g2*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

.128013bSu-T,3_4l(wn/)paPk:hors1vc2mgydi fte=050G0L0K0r0H0k0y0I0B0k0r0y0y0M010K0H0q010406050y0d0D0D0r0x0F040c0w0k0d0%0w0n050o0.0:0=0@0,0q041017051a0o1a1c170,0G0H0A0V0X0Z0#0v0H0E0v0k1q0v0K0*050Q0b0k0L1l0Y0!011p1r1t1r0K1z1B1x0K0b0w0G0@1y0x180K0v0V0`0y0q0r0n0#0C011D1n010J0S0L0n0r0D0L1x1#1%1,1F1/1B1=1@0*0a0I0s0x0w0q0w0y0H0}0n0I0O1Z0x0x0L0B2c101`0n180o1X2p0K1V1U1W0G1|0#1t0n1;291x1i1k0W1E2z0H2B0n1R1j1x0q2i182n2p2T0-1$2d2H1-2M0x0;0k0*0z2m2X0+2W1{2Z1F2#2%0*0C2+1%2-2n2y012=0r2(040h2_2o0,2|2:0#2 310j342p2Q0L2p2F2s0G2w2}0B1R1^183i1b2R2.2o3d053n0O2S2X2}0t0*0O0J3w371m1F0m0*0I3H3B382~0J0*0y0w0d0y2t0R2i0i0G0d2i0L0y3O2/3J0#0)040l3+2Y3-2~3E3%0L0L0i2*112,3u2}3/0g3d3N3I2I3^043$3(0i2^3 2`413Q3/0p0u3d060I4o463P3@3D041E0L0x0K454h3@0n0*3)0K0i0q0{0y0i0E0x1%0O3=420*3;4f3v472!3_4c3~2V4V1F434z4#394X3{4d4P4i0*0p4(4r480w3L040H3*4T044q3,480t0B0*0f0x0d0L4m4p4 3?484C043U0:3|0y2j0~0O4|2T5b2}0w0*0M4=504W043n0n0A4w0%0x0i1;0i5j5y5m4.3@3/4S4!4?5w4b4,4Z404)014j5u5c1-5r040e5Y2}5e5y5A4x0H5D5F5H5l3)5K485M5@5Q3`3|4e5O5v4$4:450I4n4p4A510*2i0K3%0 4}5p3Q5*0~5,5C5E0n0i0v0i0D2K5G2j5`613:6u4*5f0w5h6s5I5?4}671-5X4}0,0o3y3g193t0o3r2q3k102t2s1Q1S2s0r1A6N6Q1j2-6Q0P0R0T04.