Révisions et entraînement au langage Python¶
Introduction¶
Cette activité est constituée de plusieurs programmes, de difficulté croissante, à compléter ou à réaliser.
Pour chaque programme, des tests sont effectués dans chaque fonction pour vérifier leur bon fonctionnement. Si vous n'avez pas d'erreur, rien ne doit s'afficher lorsque vous exécutez le programme.
Programme 1¶
À télécharger
- programme1.py : programme 1 à compléter
- programme1_corr.py : corrigé du programme 1
Ouvrez le fichier programme1.py
dans Thonny (ou votre IDE préféré).
Question 1
Écrivez la fonction somme(a,b)
, qui renvoie la somme de deux entiers a et b.
Question 2
Complétez la fonction produit(a,b)
, qui renvoie le produit de deux entiers a et b, sans utiliser l'opérateur *
.
Question 3
Complétez la fonction prod_liste(l1, l2)
qui fait le produit des éléments de deux listes, et renvoie une nouvelle liste contenant les éléments résultant de ces produits.
Exemple : Si l1 = [1, 2, 3]
et l2 = [4, 5, 6]
, la fonction renverra une liste [4, 10, 18]
.
Programme 2¶
À télécharger
- programme2.py : programme 2 à compléter
- programme2_corr.py : corrigé du programme 2
Question 4
Complétez la fonction minimum(liste)
qui renvoie le plus petit élément d'une liste.
Question 5
Écrivez la fonction maximum(liste)
en vous basant sur le même principe que la fonction précédente.
Question 6
Complétez la fonction indice_min(liste)
qui renvoie l'indice du plus petit élément de la liste.
Question 7
Complétez la fonction tri_selection(liste)
qui effectue le tri par sélection d'une liste.
Programme 3¶
À télécharger
- programme3.py : programme 3 à compléter
- programme3_corr.py : corrigé du programme 3
Question 8
Écrivez la fonction concatener(liste)
qui renvoie la concaténation de deux listes.
Question 9
Écrivez la fonction inverse(liste)
qui renvoie l'inverse d'une liste, vous ne devez pas utiliser la méthode reverse
!
Question 10
Écrivez la fonction somme_li(liste)
qui renvoie une liste contenant la somme des éléments de la liste avec les éléments de son inverse.
Question 11
Écrivez la fonction somme_lignes(tableau)
et complétez la fonction somme_colonnes(tableau)
qui renvoient respectivement une liste contenant la somme de chaque ligne d'un tableau 2D et la somme de chaque colonne d'un tableau 2D.
On considère que les lignes du tableau font toutes la même taille.
Une liste l = [[1, 4, 5, 3], [7, 8, 5, 4], [4, 5, 8, 3]]
par exemple correspondrait au tableau suivant :
Programme 4¶
À télécharger
- programme4.py : programme 4 à compléter
- programme4_corr.py : corrigé du programme 4
Question 12
Écrivez une fonction trouver(liste, element)
qui renvoie True si l'élément element
est dans la liste liste
, False s'il n'y est pas.
Question 13
Complétez la fonction dichotomie(liste, element)
qui renvoie True si element
est dans la liste liste
, False sinon. Le paramètre liste
est une liste triée.
Programme 5¶
À télécharger
- programme5.py : programme 5 à compléter
- programme5_corr.py : corrigé du programme 5
Question 14
Écrivez une fonction compter(mot, lettre)
qui compte le nombre de fois qu'une lettre apparaît dans un mot.
Question 15
Écrivez une fonction supprimer(mot, lettre)
qui renvoie le mot initial sans la lettre spécifiée.
Question 16
Écrivez une fonction recherche(chaine, sequence)
qui recherche une séquence (une suite de caractères) dans une chaîne de caractères et renvoie True si elle est trouvée, False sinon.
Programme 6¶
À télécharger
- programme6.py : programme 6 à compléter
On s'intéresse aux classes.
Ce programme contient une classe Carte
qui représente une carte ayant une valeur (représentée par un entier de 1 à 4) et une couleur (représentée par un entier de 1 à 13).
Question 17
Le programme contient également une classe PaquetDeCarte
dans laquelle vous devez écrire la méthode remplir()
qui remplit un paquet de cartes avec les 52 cartes (13 cartes de 4 couleurs) et la méthode getCarteAt(pos)
permettant de récupérer la carte à la position pos
donnée.
Programme 7¶
À télécharger
- programme7.py : programme 7 à compléter
On souhaite représenter une liste chainée à l'aide de classes Python.
Ce programme contient une classe Noeud
et une classe Liste
.
On représente une liste chainée de la manière suivante :
La classe Liste a comme attribut premier_noeud
qui pointe vers le premier noeud de la liste.
Un noeud a comme attribut valeur
qui contient la valeur du noeud, et suivant
qui pointe vers le noeud suivant.
Ainsi, le premier noeud pointe vers le second, le second vers le troisième, etc.
Un noeud vide est représenté par l'objet None
.
Le schéma ci-dessus par exemple représente la liste [2, 4, 7]
.
Question 18
Complétez la classe Noeud
et la classe Liste
en respectant les instructions contenues dans les docstrings.
Programme 8¶
À télécharger
- programme8.py : programme 8 à compléter
Un peu de récursivité. Les fonctions suivantes doivent être écrites de manière récursive.
Question 19
Écrivez une fonction factorielle(n)
qui renvoie la factorielle du nombre n spécifiée.
Question 20
Écrivez une fonction fibonacci(n)
qui donne le n-ième terme de la suite de Fibonacci.
La suite de Fibonacci donne :
- n si n = 0 ou n = 1
- fibonacci(n - 1) + fibonacci(n - 2) si n > 1
Voir le tableau suivant :
n = | résultat |
---|---|
0 | 0 |
1 | 1 |
2 | 1 + 0 = 1 |
3 | 1 + 1 = 2 |
4 | 2 + 1 = 3 |
Question 21
Le tri fusion est un tri basé sur l'algorithme "Diviser pour régner" qui effectue le tri d'une liste en séparant récursivement la liste en deux, jusqu'à effectuer des comparaisons d'éléments un à un et à reconstituer la liste finale. Plus d'informations ici : https://fr.wikipedia.org/wiki/Tri_fusion
Voici un schéma du tri fusion appliqué à une liste de 7 éléments :
La fonction fusion
, qui fusionne deux listes triées, est donnée.
Écrivez la fonction tri_fusion
qui effectue le tri d'une liste en suivant cette méthode.