Exercices

Chapitre 6: Fonctions

1 Définir et appeler des fonctions

Écrire les fonctions suivantes, et pour chacune, donner un exemple d’appel avec la sortie attendue.

  1. Une fonction plus_grand(n1, n2) qui renvoie la plus grande valeur de deux valeurs entières données en arguments.

    def plus_grand(n1, n2):
        if n1 > n2:
            return n1
        # le else est facultatif
        else:
            return n2
    
    plus_grand(24, -12) # 24
    24
  2. Une procédure repete_mot(mot, n) qui affiche un même mot n fois.

    def repete_mot(mot, n):
        print(mot * n)
    
    
    repete_mot("TO", 2) # affiche TOTO , NE RENVOIE RIEN

    >>sortie

    TOTO
  3. Écrivez une fonction plus_grand3(n1, n2, n3) qui renvoie le maximum de trois nombres.

    def plus_grand3(n1, n2, n3):
        if n1 > n2 and n1 > n3:
            return n1
        elif n2 > n1 and n2 > n3:
            return n2
        # le else est facultatif
        else:
            return n3
    
    plus_grand3(24, -12, 48) # 48
    48
  4. Écrivez une fonction carres(n) pour afficher les valeurs des carrés des nombres compris entre 1 et n (les deux inclus).

    def carres(n):
        for i in range(1, n+1):
            print(i**2)
    
    carres(5) # affiche 1 4 9 16 25

    >>sortie

    1
    4
    9
    16
    25
  5. Écrivez une fonction est_pair(n) pour vérifier si un nombre n donné en argument est pair.

    Cette fonction doit renvoyer un booléen.

    def est_pair(n):
        if n % 2 == 0:
            return True
        else:
            return False
    
    est_pair(12345) # renvoie False
    False
  6. Écrivez une fonction factorielle(n) qui renvoie la factorielle d’un entier naturel n.

    Par définition, la factorielle est le résultat de la multiplication d’un nombre entier par tous les nombres entiers inférieurs à celui-ci.

    exemple: La factorielle de 5, qu’on note 5!, est égale à 5×4×3×2×15\times4\times3\times2\times1, soit 120.

    def factorielle(n):
        res = 1
        for i in range(2, n+1):
            res = res * i
        return res
    
    factorielle(5) # renvoie 120
    120
  7. Niveau avancé Écrivez une fonction est_premier(n) qui prend un nombre n en paramètre et vérifie si le nombre est premier ou non. La fonction doit renvoyer un booléen.

    Par définition, un nombre premier est un nombre naturel supérieur à 1 et qui n’a pas de diviseur positif autre que 1 et lui-même.

  8. Niveau avancé Écrivez une fonction triangle_pascal(n) qui affiche les n premières lignes du triangle de Pascal.

    Le triangle de Pascal est une figure arithmétique et géométrique imaginée par Blaise Pascal.

    Exemple de triangle de Pascal:

    Triangle de Pascal: Chaque nombre est la somme deux chiffres au-dessus.

2 Prototyper des fonctions

Donner le prototype des fonctions

  • plus_grand(n1, n2),
  • repete_mot(mot, n),
  • est_pair(n)
def plus_grand(n1, n2):
    """Renvoie la plus grande valeur de deux valeurs entières
    données en arguments
    
    Paramètres
    ----------
    n1: int
    n2: int
    
    Renvoie
    -------
    int
        n1 si n1 > n2 sinon n2
    """
    if n1 > n2:
        return n1
    # le else est facultatif
    else:
        return n2
def repete_mot(mot, n):
    """affiche un même mot n fois
    
    Paramètres
    ----------
    mot: str
    n: int
    
    Renvoie
    -------
    None
        pas de valeur renvoyée que des affichages
    """
    print(mot * n)
def est_pair(n):
    """Vérifie si un nombre n donné en argument est pair
    
    Paramètres
    ----------
    n: int
    
    Renvoie
    -------
    bool
        True si n est pair et False sinon
    """
    if n % 2 == 0:
        return True
    else:
        return False

3 Tests d’assertion

  1. Écrire trois tests d’assertion pour les fonctions:

    • plus_grand(n1, n2),
    • est_pair(n)
    assert plus_grand(1, 10) == 10
    assert plus_grand(11, 10) == 11
    assert plus_grand(-11, 10) == 10
    
    assert est_pair(2) == True
    assert est_pair(3) == False
    assert est_pair(-2) == True
  2. Expliquer pourquoi on ne peut pas écrire de test d’assertion pour la fonction repete_mot(mot, n).

    # assert repete_mot("TO", 2) == "TOTO"
    assert repete_mot("TO", 2) == None

    >>sortie

    TOTO