Contenu principal
Chapitre 5 · La boucle while › Leçon 2 sur 5

La balle de tennis

À cause de l'amortissement, une balle de tennis lâchée d'une certaine hauteur ne rebondit qu'aux deux tiers de cette hauteur après avoir touché le sol. Ainsi lorsqu'on lâche une balle de tennis d'une hauteur de 90cm, elle remonte au premier rebond de 23×90\frac{2}{3}\times 90 soit 60cm. Au deuxième rebond elle remonte de 23×60\frac{2}{3}\times 60 soit 40cm.

Combien la balle fait-elle de rebonds si l'on ne compte pas les rebonds de 1cm ou moins ?

Observe la fonction rebonds de l'éditeur. Elle prend en argument la hauteur initiale h en cm. La variable r correspond au nombre de rebonds qui est initialement nul. Tant que la hauteur est supérieure à 1cm, la balle rebondit, donc r est incrémenté de 1 et la nouvelle hauteur à laquelle rebondit la balle correspond aux deux tiers de la hauteur précédente.

  1. 1

    Exécute le code et appelle la fonction rebonds dans la console pour savoir combien de rebonds fait une balle de tennis lâchée d'une hauteur de 1m. On ne compte pas les rebonds de moins de 1cm.

    Solution

    La fonction rebonds prend en argument la hauteur en cm. Donc il faut appeler rebonds(100) pour une hauteur de 1m.

    >>> rebonds(100)
    12
    
  2. 2

    Une balle en caoutchouc a un meilleur rebond qu'une balle de tennis : elle rebondit aux quatre cinquièmes de la hauteur précédente. Et comme ces balles sont plus petites, on distingue mieux les petits rebonds.

    Modifie la fonction rebonds pour l'adapter aux balles en caoutchouc. On ne compte pas les rebonds de moins de 5mm.

    Solution

    Il y a deux modifications à faire :

    D'une part il faut changer la manière dont h est réassignée puisque la balle rebondit aux quatre cinquièmes de sa hauteur précédente. Donc h = h * 4 / 5

    D'autre part puisqu'on distingue les rebonds supérieurs à 5mm et que la variable h est en centimètres, la condition d'arrêt devient h > 0.5 ainsi la boucle s'arrête dès que la hauteur est inférieure ou égale à 5mm.

    def rebonds(h):
        r = 0
        while h > 0.5:
            r = r + 1
            h = h * 4 / 5
        return r
  3. 3

    Combien de rebonds fait une balle en caoutchouc lâchée d'une hauteur de 1m ? Appelle ta fonction rebonds dans la console pour le savoir. On ne compte pas les rebonds moins de 5mm.

    Solution
    >>> rebonds(100)
    12
    

Chargement...

Collecte des fichiers...

>>>