Aller au contenu

Exercices

1. Exercices variés⚓︎

Exercice 1

Ecrire une fonction double qui prend en argument un mot (type str) et renvoie le mot obtenu en doublant chaque lettre.

Par exemple double("bon") a pour valeur "bboonn"

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction
🐍 Script Python
1
2
3
4
5
def double(mot):
    chaine = ""
    for lettre in mot:
        chaine = chaine + 2*lettre
    return chaine

Exercice 2

  1. Ecrire une fonction occurence qui prend en paramètre une chaine de caractères mot et un caractère c et qui renvoie True si c apparaît dans mot, et False sinon.
      Par exemple: occurence("a", "cheval") renvoie True et occurence("a", "école") renvoie False
  2. ###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
    (Ctrl+I)
    Entrer ou sortir du mode "deux colonnes"
    (Alt+: ; Ctrl pour inverser les colonnes)
    Entrer ou sortir du mode "plein écran"
    (Esc)
    Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
    Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

    Correction

    Version 1

    🐍 Script Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def occurence(c, mot):
        for lettre in mot:
            if lettre == c:
                return True
        return False
    
    occurence("a", "cheval")
    >>> 
        True
    
    version 2
    🐍 Script Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def occurence2(c, mot):
    for i in range(len(mot)):
        if mot[i] == c:
            return True
    return False
    
    occurence2("f", "cheval")
    >>> 
        False
    

    Version 3

    🐍 Script Python
    1
    2
    3
    4
    5
    6
    7
    8
    def occurence3(c, mot):
        if c in mot:
                return True
        return False
    
    occurence3("v", "cheval")
    >>>
        True
    

    Version 4

    🐍 Script Python
    1
    2
    3
    4
    5
    6
    def occurence4(c, mot):
        return c in mot
    
    occurence4("h", "cheval")
    >>>
        True
    

  3. Modifier la fonction occurence qui au lieu de renvoyer True , envoie la première position du caractère c dans la chaîne mot et si le caractère n’est pas présent la fonction renvoie -1.
      Par exemple: occurence("a", "cheval") renvoie 4 et occurence("a", "école") renvoie -1

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

Version 1

🐍 Script Python
1
2
3
4
5
6
7
8
9
def occurence(c, mot):
    for lettre in mot:
        if lettre == c:
            return mot.index(lettre)
    return -1

occurence("e", "cheval")
>>> 
    2
version 2
🐍 Script Python
1
2
3
4
5
6
7
8
9
def occurence2(c, mot):
for i in range(len(mot)):
    if mot[i] == c:
        return i
return -1

occurence2("u", "cheval")
>>> 
    -1

Version 3

🐍 Script Python
1
2
3
4
5
6
7
8
def occurence3(c, mot):
    if c in mot:
            return mot.index(lettre)
    return -1

occurence3("v", "cheval")
>>> 
    3

Version 4

🐍 Script Python
1
2
3
4
5
6
7
8
9
def occurence4(c, mot):
    for i,lettre in enumerate(mot):
        if lettre == c:
            return i
    return -1

occurence4("c", "cheval")
>>> 
    0

Exercice 3

Écrire une fonction reverso qui renvoie le mot donné en paramètre à l'envers.

🐍 Script Python
# Jeu d'essai (A copier dans l'éditeur)

print("Pass test1 --> ",reverso("")=="")
print("Pass test2 --> ",reverso("a")=="a")
print("Pass test3 --> ",reverso("bonjour")=="ruojnob")
print("Pass test4 --> ",reverso("aa")=="aa")
print("Pass test5 --> ",reverso("laval")=="laval")

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

```

Exercice 4

Écrire une fonction palindrome utilisant la fonction reverso et qui renvoie True si le mot passé en paramètre est un palindrome.

🐍 Script Python
# Jeu d'essai
print("Pass test1 --> ",palindrome("")==False)
print("Pass test2 --> ",palindrome("a")==True)
print("Pass test3 --> ",palindrome("bonjour")==False)
print("Pass test4 --> ",palindrome("aa")==True)
print("Pass test5 --> ",palindrome("laval")==True)

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

Exercice 5

Écrire une fonction nb_voyelles qui prend en paramètre la chaine de caractères mot renvoie le nombre de voyelles de mot.

Exemple d'utilisation

🐍 Script Python
>>> nb_voyelles("bonjour")
3

Vous pouvez utiliser la fonction de tests ci-dessous :

🐍 Script Python
1
2
3
4
5
def test_nb_voyelles():
    assert nb_voyelles("bonjour") == 3
    assert nb_voyelles("fdjgdhk") == 0
    assert nb_voyelles("au") == 2
    print("tests ok")

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

2. Problème⚓︎

Question 1

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

Aide

🐍 Script Python
>>> ord('A')
65
>>> chr(65)
'A'

Exemple d'utilisation

🐍 Script Python
>>> decale('F')
'I'

Vous pouvez utiliser la fonction de tests ci-dessous :

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

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

Question 2

Rajoutez un paramètre n à la fonction précédente pour pouvoir décaler la lettre de n rangs.

Exemple d'utilisation

🐍 Script Python
>>> decale('B', 5)
'G'

Vous pouvez utiliser la fonction de tests ci-dessous :

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

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

Question 3

Utilisez la fonction précédente pour créer la fonction decale_phrase qui prend en paramètres une phrase p et un nombre n et qui décale toutes les lettres de p de n rangs. On laissera les espaces intacts.

Exemple d'utilisation

🐍 Script Python
>>> decale_phrase("PAS MAL DU TOUT", 4)
'TEW QEP HY XSYX'
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction

Question 4

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

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Correction