nSi,2022-2023, les tuples en python

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]