Aller au contenu

TD⚓︎

Exercice 1

def foo(mot):
    return len(mot) * '*'
  1. Que renvoie (retourne) l'appel foo("mot de passe") ?
  2. Modifier la fonction pour que la fonction retourne deux étoiles en plus.
  1. Renvoie '************'
  2. def foo(mot):
        return len(mot) * '*' + '**'
    

Exercice 2

def foo(a, b):
    return a + b
  1. Que renvoie (retourne) l'appel foo(8, 9) ?
  2. Modifier la fonction pour que la fonction retourne le produit des paramètres.
  1. Renvoie 17
  2. def foo(a, b):
        return a * b
    

Exercice 3

def foo(a, b):
    q = a // b
    r = a % b
    return str(a) + " = " + str(q) + " * " + str(b) + " + " + str(r)
  1. Que renvoie (retourne) l'appel foo(15, 4) ?
  2. Modifier la fonction pour que l'appel foo(15, 4) retourne "15 / 4 = 3.75".
  1. Renvoie '15 = 3 * 4 + 3'
  2. def foo(a, b):
        q = a / b
        return str(a) + " / " + str(b) + " = " + str(q)
    

Exercice 4

  1. Que fait la fonction suivante ?

    def foo():
        print("***")
        print("***")
        print("***")
    
  2. Que fait la fonction suivante ?

    def foo():
        res = "***\n"
        res += "***\n"
        res += "***\n"
        return res
    
  1. Elle affiche

    ***
    ***
    ***
    
  2. Elle retourne la chaine '***\n***\n***\n'. Cette chaine, si on l'affiche s'affichera comme la fonction précédente.

Exercice 5

  1. Écrire une fonction triangle() retournant une chaine de caractères s'affichant:

    *
    **
    ***
    ****
    
  2. Écrire une fonction rectangle(lg) retournant une chaine de caractères composée de trois lignes de lg étoiles.

    Exemple:

    >>> print(rectangle(10))
    **********
    **********
    **********
    
  1. def triangle():
        return "*\n**\n***\n****"
    
  2. def rectangle(lg):
        return (lg * '*' + '\n') * 3
    

Exercice 6

def foo(prenom):
    prenom = input("quel est votre prénom ?")
    print("Bonjour", prenom)
  1. Qu'affiche l'appel foo("Rosa") ?
  2. Kevin pense que pour que l'appel foo("Rosa") affiche Bonjour Rosa il faut modifier la fonction comme suit:

    def foo(prenom):
        prenom = "Rosa"
        print("Bonjour", prenom)
    

    Qu'en pensez-vous ?

  1. Affichera Bonjour suivi du prenom indiqué par l'utilisateur. C'est absurde puisque l'on s'attendrait à ce que cela affiche Bonjour Rosa
  2. La solution de Kevin permet d'afficher Bonjour Rosa mais l'appel foo("Reda") affichera encore Bonjour Rosa. C'est tout aussi absurde.

IL NE FAUT DONC JAMAIS "ECRASER" LES PARAMÈTRES DE LA FONCTION.

Exercice 7

Ecrire des docstrings pour les fonctions que vous avez écrites aux exercices 1 à 4.

Voir exercice suivant

Exercice 8

Ecrire des doctests pour les fonctions que vous avez écrites aux exercices 1 à 4.

Avec l'exercice précédent:

# Ex1
def foo(mot):
    """Cette fonction renvoie une chaine de caractères composée d'autant d'étoiles que 
    le nombre de caractères de mot.

    Args:
        mot (str): chaine de caractères que l'on veut remplacer

    Returns:
        str : chaine composée d'étoiles voulue

    >>> foo("bonjour")
    '*******''
    >>> foo("")
    ''
    """
    return len(mot) * '*'

# Ex2
def foo(a, b):
    """Cette fonction renvoie la somme des nombres (int ou float) passés en paramètre.

    Args:
        a (int ou float): un deux deux nombres que l'on veut additionner
        b (int ou float): autre nombre que l'on veut additionner

    Returns:
        int ou float : somme de a et b

    >>> foo(8, 9)
    17
    >>> foo(-2.0, 0)
    -2.0
    """
    return a + b