Exercices sur les bases de Python

Les exercices suivants sont tirés du livre « Programmation C++ (débutant) » de Wikibooks (https://fr.wikibooks.org/wiki/Programmation_C%2B%2B_%28d%C3%A9butant%29/Introduction) disponible en licence Creative Commons.

Comme le nom du livre l'indique, ces exercices font partie d'un cours de C++. Ils peuvent néanmoins être traîtés en python.

Ils sont progressifs dans le sens où ils utilisent des compétences de plus en plus élaborées. Ceci dit, il possible de bloquer sur un exercice N alors que le N+1 semble très facile.

Il y a beaucoup d’exercices… Voici une suggestion de parcours selon votre niveau :

EN DOUCEUR JE CONNAIS DEJA LES BASES JE MAITRISE !
1, 2, 3, 4 1, 3, 4, 6 1, 3, 4, 6
6, 14, 9, 7 9, 7, 8 7, 8
8, 15, 16 15, 16, 18, 22 16, 18, 22
17, 18, 22 23, 31, 32 23, 31, 32
23, 31, 32 35, 36 36, 50, 51
34, 35, 36 49, 50 *
48, 49, 50 * *

– Le Hello World –

  1. En utilisant l'environnement de développement de votre choix, écrire, compiler et exécuter un programme qui affiche bonjour à l'écran.
In [1]:
# Saisir le code ici

– Les variables –

  1. Écrire un programme qui demande à l'utilisateur de taper la largeur et la longueur d'un champ et qui en affiche le périmètre et la surface.
In [2]:
# Saisir le code ici
  1. Écrire un programme qui demande à l'utilisateur de taper 5 entiers et qui affiche leur moyenne. Idéalement le programme ne devra utiliser que 2 variables.
In [3]:
# Saisir le code ici
  1. Écrire un programme qui demande à l’utilisateur de saisir 2 entiers A et B, qui échange le contenu des variables A et B puis qui affiche A et B.
In [4]:
# Saisir le code ici
  1. Écrire un programme qui demande à l'utilisateur de taper le prix HT d'un kilo de tomates, le nombre de kilos de tomates achetés, le taux de TVA (Exemple 5.5, 19.6,...). Le programme affiche alors le prix TTC des marchandises.
In [5]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de saisir les coordonnées de deux points du plan A et B et qui affiche la distance entre A et B. Indication : importer la bibliothèque math (import math) en début de programme afin d’utiliser la racine carrée ( sqrt() )
In [6]:
# Saisir le code ici

– Les tests (if… else…elif…) –

  1. Ecrire un programme qui résout l'équation $ax+b=0$. Bien évidemment, on n'oubliera pas tous les cas particuliers (notamment les cas "tout $x$ est solution" et "pas de solution").
In [7]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper 5 entiers et qui affiche le plus grand. Le programme ne devra utiliser que 2 variables.
In [8]:
# Saisir le code ici
  1. Ecrire un programme qui résout l’équation $ax^2+bx+c=0$ en envisageant tous les cas particuliers.
In [9]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de saisir les coordonnées de 4 points A, B, C et D puis qui affiche les informations suivantes :
    • si A et B sont confondus, on affiche ‘A et B sont confondus’
    • si C et D sont confondus, on affiche ‘C et D sont confondus’
    • si A et B ne sont pas confondus et si C et D ne sont pas confondus, on affiche soit ‘(AB) et (CD) sont parallèles’, soit '(AB) et (CD) sont confondues', soit ‘(AB) et (CD) sont sécantes’.
In [10]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de saisir un entier X et qui affiche la valeur absolue de X. On n’utilisera pas la fonction abs de la bibliothèque math. Il faudra donc tester si X est positif ou négatif et agir en conséquence.
In [11]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de saisir 3 entiers A, B et C et qui indique si C est compris entre A et B, bornes incluses.
In [12]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de saisir 4 entiers A, B, C et D, puis qui indique quelle est l'intersection des intervalles [AB] et [CD].
In [13]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper un entier et qui affiche GAGNE si l'entier est entre 56 et 78 bornes incluses PERDU sinon.
In [14]:
# Saisir le code ici

– Boucles For et While –

  1. Ecrire un programme qui affiche tous les entiers de 8 jusqu’à 23 (bornes incluses) en utilisant un for.
In [15]:
# Saisir le code ici
  1. Même exercice mais en utilisant un while.
In [16]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de taper 10 entiers et qui affiche leur somme.
In [17]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de taper 10 entiers et qui affiche le plus petit de ces entiers.
In [18]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper un entier N et qui calcule la somme des cubes de $5^3$ à $N^3$.
In [19]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper un entier n et qui calcule un défini par : $u_0=3$ et $u_{n+1}=3 \times u_n+4$
In [20]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper un entier n et qui calcule un défini par : $u_0=1$ $u_1=1$ $u_{n+1}=u_n+u_{n-1}$
In [21]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de taper un entier N entre 0 et 20 bornes incluses et qui affiche N+17. Si on tape une valeur erronée, il faut afficher "erreur" et demander de saisir à nouveau l'entier.
In [22]:
# Saisir le code ici
  1. Ecrire un programme qui permet de faire des opérations sur un entier (valeur initiale à 0). Le programme affiche la valeur de l'entier puis affiche le menu suivant :
    • 1 : Ajouter 1
    • 2 : Multiplier par 2
    • 3 : Soustraire 4
    • 4 : Quitter

Le programme demande alors de taper un entier entre 1 et 4. Si l'utilisateur tape une valeur entre 1 et 3, on effectue l'opération, on affiche la nouvelle valeur de l'entier puis on réaffiche le menu et ainsi de suite jusqu'à ce qu'on tape 4. Lorsqu'on tape 4, le programme se termine.

In [23]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper des entiers strictement positifs et qui affiche leur moyenne. Lorsqu'on tape une valeur négative, le programme affiche ERREUR et demande de retaper une valeur. Lorsqu'on tape 0, cela signifie que le dernier entier a été tapé. On affiche alors la moyenne. Si le nombre d'entiers tapés est égal à 0, on affiche PAS DE MOYENNE.
In [24]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper un entier n et qui calcule un défini par : $u_0=3$ $u_1=2$ $u_n=n \times u_{n-1}+(n+1) \times u_{n-2}+n$
In [25]:
# Saisir le code ici
  1. Ecrire un programme qui demande de saisir 10 entiers et qui affiche le nombre d'occurrences de la note la plus haute.
In [26]:
# Saisir le code ici
  1. Ecrire un programme qui demande de saisir un entier N et qui affiche N!. On précise que $N ! = N \times (N –1) \times (N – 2) \times … \times 1$. Ainsi $5 ! = 5 \times 4 \times 3 \times 2 \times 1 = 120$
In [27]:
# Saisir le code ici
  1. Ecrire un programme qui demande de saisir un entier et qui indique si cet entier est premier ou non.
In [28]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir un entier $N$ et qui affiche le nombre de nombres premiers inférieurs ou égaux à $N$.
In [29]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir un entier $N$ et qui affiche le $N-ième$< nombre premier.
In [30]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir un entier N et qui affiche la figure suivante.

    • Si N=1

    *

    • Si N=2

    **

    *

    • Si N=3

    ***

    **

    *

et ainsi de suite

In [56]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir un entier N et qui affiche la figure suivante.
    • Si N=1

*

  • Si N=2

*

**

  • Si N=3

*

**

***

et ainsi de suite.

In [32]:
# Saisir le code ici
  1. On considère la suite hongroise : $u_0=a$ ($a$ entier) si un pair alors $u_{n+1}=u_n/2$ sinon $u_{n+1} =3\times u_n +1$ Pour toutes les valeurs $a$, il existe un entier $N$ tel que $u_N=1$ (conjecture admise). a) Ecrire un programme qui demande à l'utilisateur de taper $a$ et qui affiche toutes les valeurs de $u_n$ de $1$ à $n$. b) Ecrire un programme qui demande à l'utilisateur de taper un entier $M$ puis qui cherche la valeur de a comprise entre $2$ et $M$ qui maximise la valeur de $N$. On appelle $A$ cette valeur. Le programme doit afficher la valeur $A$ et la valeur $N$ correspondante.
In [33]:
# Saisir le code ici

– Les tableaux –

  1. Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau. Le programme doit afficher le nombre d'entiers supérieurs ou égaux à 10.
In [34]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V. Le programme doit rechercher si V se trouve dans le tableau et afficher "V se trouve dans le tableau" ou "V ne se trouve pas dans le tableau".
In [35]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau. Le programme doit ensuite afficher l'indice du plus grand élément.
In [36]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V. Le programme doit rechercher si V se trouve dans le tableau et doit supprimer la première occurrence de V en décalant d'une case vers la gauche les éléments suivants et en rajoutant un 0 à la fin du tableau. Le programme doit ensuite afficher le tableau final.
In [37]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V et un entier i compris entre 0 et 9. Le programme doit décaler d'une case vers la droite tous les éléments à partir de l'indice i (en supprimant le dernier élément du tableau) et doit mettre la valeur V dans le tableau à l'indice i. Le programme doit ensuite afficher le tableau final.
In [38]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau. Le programme doit ensuite afficher soit "le tableau est croissant", soit "le tableau est décroissant", soit "le tableau est constant", soit "le tableau est quelconque".
In [39]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau. Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.

Algorithme suggéré :

  • On cherche l'indice du plus petit élément parmi les indices de 0 à 9 et on échange cet élément avec t[0].
  • On cherche l'indice du plus petit élément parmi les indices de 1 à 9 et on échange cet élément avec t[1].
  • On cherche l'indice du plus petit élément parmi les indices de 2 à 9 et on échange cet élément avec t[2].
  • On cherche l'indice du plus petit élément parmi les indices de 8 à 9 et on échange cet élément avec t[8].
In [40]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau. Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.

Algorithme suggéré (tri bulle) :

  • On parcourt le tableau en comparant t[0] et t[1] et en échangeant ces éléments s'ils ne sont pas dans le bon ordre.
  • On recommence le processus en comparant t[1] et t[2],... et ainsi de suite jusqu'à t[8] et t[9].
  • On compte lors de ce parcours le nombre d'échanges effectués.
  • On fait autant de parcours que nécessaire jusqu'à ce que le nombre d'échanges soit nul : le tableau sera alors trié.
In [41]:
# Saisir le code ici
  1. Ecrire un programme qui saisit 2 tableaux de 10 entiers a et b. c est un tableau de 20 entiers. Le programme doit mettre dans c la fusion des tableaux a et b. On copiera dans les 10 premières cases de c le tableau a, dans les dix dernières le tableau b. Le programme affiche ensuite le tableau c.
In [42]:
# Saisir le code ici
  1. Ecrire un programme qui saisit 2 tableaux de 10 entiers a et b qui doivent être triés dans l'ordre croissant. Le programme devra tout d'abord vérifier que les deux tableaux sont triés. Le tableau c est un tableau de 20 entiers. Le programme doit mettre dans c la fusion des tableaux a et b. Le tableau c devra contenir les éléments de a et ceux de b et devra être trié. Le programme affiche ensuite le tableau c.
In [43]:
# Saisir le code ici
  1. Ecrire un programme qui gère une liste d'entiers grâce au menu suivant :
    • 1 : Ajouter un entier
    • 2 : Afficher la liste des entiers
    • 3 : Supprimer le dernier entier de la liste.
    • 4 : Afficher la dernière note tapée
    • 5 : Quitter Il y aura au maximum 10 entiers. Lorsqu'on rajoute un entier, il sera rajouté à la fin de la liste.
In [44]:
# Saisir le code ici
  1. Ecrire un programme qui gère une liste d'entiers grâce au menu suivant :
    • 1 : Ajouter un entier
    • 2 : Afficher la liste des entiers
    • 3 : Supprimer le premier entier ayant une valeur donnée.
    • 4 : Supprimer tous les entiers ayant une valeur donnée
    • 5 : Quitter Il y aura au maximum 10 entiers. La liste devra être en permanence triée : lorqu'on rajoute un entier, il sera inséré au bon endroit dans la liste pour que celle-ci reste triée.
In [45]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper 10 entiers compris entre 0 et 20 qui seront stockés dans un tableau et qui affiche le nombre de fois qu'on a tapé un 0, le nombre de 1, le nombre de 2, ..., le nombre de 20.
In [46]:
# Saisir le code ici
  1. Ecrire un programme qui demande à l'utilisateur de taper le contenu d'un tableau de réels de 3 lignes et 3 colonnes et qui affiche ce tableau mais en affichant la moyenne des éléments de chaque ligne, de chaque colonne et la moyenne globale.
In [47]:
# Saisir le code ici

– Les fonctions –

  1. Ecrire une fonction distance ayant comme paramètres 4 doubles xa,ya et xb,yb qui représentent les coordonnées de deux points A et B et qui renvoie la distance AB. Tester cette fonction.
In [48]:
# Saisir le code ici
  1. Ecrire une fonction ayant comme paramètre un nombre décimal x et qui renvoie un nombre décimal. La fonction renvoie la racine carrée de (x-1)*(2-x). Si ce nombre n’existe pas, la fonction renvoie -1.
In [49]:
# Saisir le code ici
  1. Ecrire une fonction ayant en paramètre un entier et qui renvoie un booléen : true si l'entier est premier et false sinon. Tester cette fonction.
In [50]:
# Saisir le code ici
  1. Ecrire une fonction ayant comme paramètre un entier $n$ et qui renvoie le $n-ième$ nombre premier. Tester cette fonction.
In [51]:
# Saisir le code ici
  1. Ecrire une fonction ayant en paramètre un tableau t de taille quelconque. La fonction doit renvoyer un booléen b indiquant s'il existe une valeur comprise entre 0 et 10 dans les cases du tableau t. Tester cette fonction.
In [52]:
# Saisir le code ici
  1. Ecrire une fonction ayant en paramètre un tableau t de taille quelconque. La fonction doit renvoyer le nombre de valeurs comprises entre 0 et 10 dans les cases du tableau t. Tester cette fonction.
In [53]:
# Saisir le code ici
  1. Ecrire une fonction ayant en paramètres un tableau t de taille quelconque. La fonction doit renvoyer un entier égal à l'indice de la première case du tableau (parmi les n premières) comprise entre 0 et 10. S'il n'existe pas de telle valeur, la fonction renvoie -1. Tester cette fonction.
In [54]:
# Saisir le code ici