Proposition de correction des questions 2 à 4 :
def temps_secondes(temps):
'''
>>>temps_secondes((1,10,5))
4205
'''
h=temps[0]
mn=temps[1]
s=temps[2]
return h*3600+mn*60+s
def temps_h_mn_s(temps):
'''
>>>temps_h_mn_s(4205)
(1,10,5)
'''
h=temps//3600
mn=(temps-h*3600)//60
s=temps-h*3600-mn*60
return h,mn,s
donnees=(
# ( nom du candidat, temps sous la forme (h,mn,s))
("Paul",(2,3,45)),
("Sandrine",(1,10,5)),
("Jacques",(2,0,15))
)
def temps_en_s(var):
'''
transforme les temps des coureurs en temps en secondes
: return : tuple
>>>temps_en_s(donnees)
(('Paul', 7425), ('Sandrine', 4205), ('Jacques', 7215))
'''
retour=()
for coureur in var:
nom=coureur[0]
tps=temps_secondes(coureur[1])
retour+=((nom,tps),)
return retour
def liste_temps(var):
''' retourne les temps sous la forme d'un tuple:
>>>course=(('Paul', 7425), ('Sandrine', 7102), ('Jacques', 7215))
>>>liste_temps(course)
(7425,7102,7215)
'''
tuple_temps=()
for coureur in var:
t=coureur[1]
tuple_temps+=(t,)
return tuple_temps
def val_min(A):
'''
retourne la valeur minimale et l'indice correspondant
>>>A=(2,3,6,2,1,6)
>>>val_min(A)
(1,4)
'''
val_min=A[0]
ind_val_min=0
for i in range(len(A)):
if A[i]<val_min:
val_min=A[i]
ind_val_min=i
return val_min,ind_val_min
def gagnant(var):
courses_s=temps_en_s(var)
liste_tps_en_s=liste_temps(courses_s)
position_gagnant=val_min(liste_tps_en_s)[1]
return var[position_gagnant][0]