Exercices

Travail à réaliser sur le notebook Capytale du lien suivant:

T1.5 Fonctions

Exercice 1

Définissez une fonction maxi(n1,n2) qui renvoie le plus grand élément entre n1 et n2. Testez votre fonction maxi(n1,n2) à l'aide d'une fonction test_maxi()

Vous pouvez utiliser la fonction de tests ci-dessous :

1
2
3
4
5
def test_maxi():
    assert maxi(3,4) == 4
    assert maxi(5,2) == 5
    assert maxi(7,7) == 7
    print("tests ok")

Exercice 2

Définissez une fonction decale(lettre) qui décale de 3 rangs dans l'alphabet la lettre majuscule lettre passée en argument (après Z, on recommencera à A..)

Testez votre fonction decale(lettre) à l'aide d'une fonction test_decale()

Aide :

>>> ord('A')
65
>>> chr(65)
'A'

Vous pouvez utiliser la fonction de tests ci-dessous :

1
2
3
4
def test_decale():
    assert decale('A') == 'D'
    assert decale('Z') == 'C'
    print('tests ok !')

Exercice 3

Définissez une fonction decale_n(lettre, n) en ajoutant un paramètre n à la fonction précédente pour pouvoir décaler la lettre de n rangs.

Testez votre fonction decale_n(lettre, n) à l'aide d'une fonction test_decale_n()

Vous pouvez utiliser la fonction de tests ci-dessous :

1
2
3
4
5
def test_decale_n():
    assert decale('A', 3) == 'D'
    assert decale('A', 5) == 'F'
    assert decale('Z', 1) == 'A'
    print('tests ok !')

Exercice 4

Utilisez la fonction précédente pour créer la fonction decale_phrase(p, n) qui décale toutes les lettres d'une phrase p de n rangs.

Exercice 5

Décodez la phrase RT BTHHPVT CT RDCIXTCI GXTC S XCITGTHHPCI.

Exercice 6

La conjecture de Syracuse (ou de Collatz) postule ceci :

Prenons un nombre \(n\) : si \(n\) est pair, on le divise par 2, sinon on le multiplie par 3 puis on ajoute 1. On recommence cette opération tant que possible. Au bout d'un certain temps, on finira toujours par tomber sur le nombre 1.

  1. Écrire une fonction suivant(n) qui renvoie le successeur du nombre n, suivant les règles énoncées ci-dessus.
  2. Écrire une fonction syracuse(n) qui affiche tous les termes de la suite de Syracuse jusqu'à (on l'espère !) 1.

Exercice 7

  1. Écrire une fonction temps_de_vol(n) qui renvoie le nombre d'étapes pour arriver à 1, en partant de n
  2. Écrire une fonction temps_max(nmax) qui affiche le plus grand temps de vol pour un nombre entre 1 et nmax.
  3. Modifier cette fonction pour afficher aussi le nombre de départ donnant ce plus grand temps de vol.

Dernière mise à jour: 2022-09-30