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

.128013evw1Srcs )_ia:tf,o/hpmngPyk=u;ld2b(050G0b0p0n0m0F0i0j0h0F0n0i0i0C010p0m0v010406050i0D0w0w0n0g0A040f0s0F0D0!0s0x050t0+0-0/0;0)0v040}1405170t1719140)0G0m0c0S0U0W0Y0u0m0y0u0F1n0u0p0%050N0I0F0b1i0V0X011m1o1q1o0p1w1y1u0p0I0s0G0;1v0g150p0u0S0@0i0v0n0x0Y0H011A1k010q0P0b0x0n0w0b1u1Y1!1)1C1,1y1/1;0%0a0j0z0g0s0v0s0i0m0`0x0j0L1W0g0g0b0h290}1@0x150t1U2m0p1S1R1T0G1_0Y1q0x1.261u1f1h0T1B2w0m2y0x1O1g1u0v2f152k2m2Q0*1Z2a2E1*2J0g0.0F0%0e2j2U0(2T1^2W1C2Y2!0%0H2(1!2m2N0b2m2C2p0G2t2v010h1O1=152|182O2+2l2?3a320L2P2U300B0%0L0q3b3f2,1j1C0d0%0j3m39300x0q0%0b0i0p0l0v0^0i0l0y0g1!0L3u2k300$040J3M3g2-0Y0x3j0D2f0b0l2%0~2)3v3U013P0r3m3t3N3*3W040G3Y0b3!2=3%2@3)3p0Y3P0k0o3m060j463/3T3 013i042f0p3Y0|3|2l483o2F013=320x0c0b0g0!0g0l1.0l0i2g0{0L0i3S4l1*3P3R4i3n2V4a3=3@3Z3#4E4L4m413.3~4m0s0%020y0p0E0C4V3:4M0%4p4r4t0m4v4x4z4p4C4R3O0%4I2S4*4m4N3^3`4_3*4U4J0)0t3d2`16380t362n2~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

.128013evw1SrcsT )_ia:t43f,o/hpmngPyk=uld-2b(050I0b0q0o0n0H0i0k0h0H0o0i0i0F010q0n0y010406050i0G0z0z0o0g0D040f0v0H0G0%0v0A050w0.0:0=0@0,0y041017051a0w1a1c170,0I0n0c0V0X0Z0#0x0n0B0x0H1q0x0q0*050Q0L0H0b1l0Y0!011p1r1t1r0q1z1B1x0q0L0v0I0@1y0g180q0x0V0`0i0y0o0A0#0K011D1n010t0S0b0A0o0z0b1x1#1%1,1F1/1B1=1@0*0a0k0C0g0v0y0v0i0n0}0A0k0O1Z0g0g0b0h2c101`0A180w1X2p0q1V1U1W0I1|0#1t0A1;291x1i1k0W1E2z0n2B0A1R1j1x0y2i182n2p2T0-1$2d2H1-2M0g0;0H0*0e2m2X0+2W1{2Z1F2#2%0*0K2+1%2-2n2y012=0o2(040s2_2o0,2|2:0#2 310r342p2Q0b2p2F2s0I2w2}0h1R1^183i1b2R2.2o3d053n0O2S2X2}0E0*0O0t3w371m1F0d0*0k3H3B382~0t0*0i0v0G0i2t0R2i0m0I0G2i0b0i3O2/3J0#0)040M3+2Y3-2~3E3%0b0b0m2*112,3u2}3/0u3d3N3I2I3^043$3(0m2^3 2`413Q3/0l0p3d060k4o463P3@3D041E0b0g0q454h3@0A0*3)0q0m0y0{0i0m0B0g1%0O3=420*3;4f3v472!3_4c3~2V4V1F434z4#394X3{4d4P4i0*0l4(4r480v3L040n3*4T044q3,480E0h0*0j0g0G0b4m4p4 3?484C043U0:3|0i2j0~0O4|2T5b2}0v0*0F4=504W043n0A0c4w0%0g0m1;0m5j5y5m4.3@3/4S4!4?5w4b4,4Z404)014j5u5c1-5r040J5Y2}5e5y5A4x0n5D5F5H5l3)5K485M5@5Q3`3|4e5O5v4$4:450k4n4p4A510*2i0q3%0 4}5p3Q5*0~5,5C5E0A0m0x0m0z2K5G2j5`613:6u4*5f0v5h6s5I5?4}671-5X4}0,0w3y3g193t0w3r2q3k102t2s1Q1S2s0o1A6N6Q1j2-6Q0P0R0T04.