user
Comment écrire une fonction Python qui prend en argument une liste L et renvoie le nombre de classes [ak,bk[ d'amplitude 10 dont les extrémités ak et bk sont des dizaines ?
alphonsio

Pour écrire une fonction en Python qui prend en argument une liste L et renvoie le nombre de classes [ak,bk[[a_k, b_k[ d'amplitude 10, où aka_k et bkb_k sont des multiples de 10, vous pouvez faire comme suit :

def nombre_classes(L):
    if not L:
        return 0
    
    # Trouver les bornes min et max
    min_val = min(L)
    max_val = max(L)
    
    # Arrondir min_val au multiple de 10 précédent ou égal
    ak = (min_val // 10) * 10
    # Arrondir max_val au multiple de 10 suivant
    bk = ((max_val // 10) + 1) * 10
    
    # Calculer le nombre de classes
    return (bk - ak) // 10

# Exemple d'utilisation :
L = [4, 15, 23, 37, 42, 58, 63, 79]
print(nombre_classes(L))  # Cela devrait afficher 8 car les classes vont de [0,10[ à [70,80[

Explication

  1. Initialisation des bornes :

    • min_val et max_val représentent les valeurs minimum et maximum de la liste L.
    • ak est calculé comme le plus grand multiple de 10 inférieur ou égal à min_val.
    • bk est calculé comme le plus petit multiple de 10 supérieur à max_val.
  2. Calcul du nombre de classes :

    • La différence bk - ak donne la plage totale couvrant toutes les valeurs de L.
    • Diviser cette différence par 10 donne le nombre de classes d'amplitude 10.

Cette fonction considère également les cas où la liste pourrait être vide. Si c'est le cas, elle renvoie 0.

Testez ce code en ligne :