Aller au contenu

DS 0001 (Corrigé)⚓︎

Exercice 1⚓︎

  1. Un algorithme est appelé glouton lorsqu'il fait le meilleur choix local à chaque étape en espérant obtenir le meilleur choix global.

  2. Comme on ne peut pas représenter l'infinité des nombres réels avec un mémoire finie, les nombres flottants sont des valeurs approchées. La comparaison de deux nombres flottants peut donc être fausse.

  3. 1
    2
    3
    4
    5
    6
    def maximum(tab):
        m = tab[0] # tab est non vide, donc on peut prendre l'élément d'indice 0
        for elt in tab:
            if elt > m:
                m = elt
        return m
    

Exercice 2⚓︎

Il y a 6 erreurs dans ce code:

  1. s == 0 est incorrect, il faut écrire s = 0 pour affecter la valeur 0 à s.
  2. il manque : en fin de ligne for element in tab (SyntaxError).
  3. il faut tester element >=0
  4. NameError: il manque un t à elemen : s = s + element
  5. cette ligne est mal indentée (IndentationError
  6. la fonction doit renvoyer la somme avec return s et non l'afficher avec print(s)

Le code corrigé:

1
2
3
4
5
6
def somme(tab):
    s = 0
    for element in tab:
        if element >= 0:
            s = s + element
    return s

Exercice 3⚓︎

1
2
3
4
5
6
7
8
def est_triee(tab:list) -> bool:
    for i in range(len(tab)-1):
        if tab[i] > tab[i+1]:
            return False
    return True

assert est_triee([1, 2, 3, 4]) == True
assert est_triee([2, 1]) == False

Exercice 4⚓︎

  1. Attributs :

    • ouvert (bool) : pour déterminer si l'état du coffre, ouvert ou fermé. Vaut False par défaut, à l'instanciation.
    • code (int) : le code nécessaire à l'ouverture. Déterminé à l'instanciation (paramètre du constructeur __init__).
    • montant (float): le montant d'argent contenu dans le coffre. Vaut 0 par défaut, à l'instanciation.
  2. Méthodes:

    • ouvrir(c:int) : ouvre le coffre si la valeur c passée en argument correspond au code du coffre.
    • fermer() : ferme le coffre.
    • consulter() -> str : donne le montant du coffre si celui est ouvert.
    • déposer(m:float) : ajoute au montant du coffre la valeur m passée en argument.
    • retirer(m:float) : enlève au montant du coffre la valeur m passée en argument.