Vous êtes sur la page 1sur 11

Exercices de base avec Python

http://irem.univ-reunion.fr/spip.php?article686

Exercices de base avec Python


- Lycée et post-bac
- Informatique et sciences du numérique
-

Date de mise en ligne : jeudi 5 septembre 2013

Copyright © IREM de la Réunion - Tous droits réservés

Copyright © IREM de la Réunion Page 1/11


Exercices de base avec Python

Correction d'exercices Python proposés par Gérard Swinnen dans son livre « Apprendre à
programmer avec Python ». Ce livre est téléchargeable au format PDF ici.
La correction est proposée pour Python 2.7 et est évidemment non-exhaustive.

[http://irem.univ-reunion.fr/local/cache-vignettes/L292xH400/apprendre_python400-bd1f0.jpg]

Il existe une foule de sites Internet sur le langage Python et lorsque l'on débute en Python, il est bien difficile de
trouver des sites qui permettent au néophyte une utilisation concrète et immédiate de scripts Python. J'ai au fil de
mes surfs découvert ce livre qui est d'une utilisation totalement immédiate et extrêmement pratique.
La plupart des scripts de cette page sont inspirés de ce livre.
Pour vous exercer et apprendre à programmer en Python, il vous suffit d'ouvrir un terminal (sous Mac ou Linux) ou
un environnement qui permet d'écrire des scripts Python sous Windows, et d'effectuer des copier-coller des scripts
proposés après avoir tapé

> python

dans votre terminal.

Python, les bases : lecture de code


• Utilisation de l'opérateur modulo :

>>> a = 7
>>> if (a % 2 == 0):
... print "a est pair"
... print "parce que le reste de sa division par 2 est nul"
... else:
... print "a est impair"
...

• Donner le résultat obtenu à l'exécution de ce code Python :

>>> a = 0
>>> while (a < 7): # (n'oubliez pas le double point !)
... a = a + 1 # (n'oubliez pas l'indentation !)
... print a

• Lire le code suivant :

>>> a = 0
>>> if a > 0 :
... print "a est positif"

Copyright © IREM de la Réunion Page 2/11


Exercices de base avec Python
... elif a < 0 :
... print "a est négatif"
... else:
... print "a est nul"
...

Le modifier pour tester un nombre réel quelconque.

• Lecture et compréhension de code :


[-] >Que fait le programme ci-dessous, dans les quatre cas où l'on aurait défini au préalable que la variable a
vaut 1, 2, 3 ou 15 ?

if a != 2:
print 'perdu'
elif a == 3:
print 'un instant, s.v.p.'
else:
print 'gagné'

[-] > Que font les programmes suivants ?

a=5
b = -1
if (a == 5) & (b < 2):
print '"&" signifie "et" ; on peut aussi utiliser\
le mot "and"'

a, b = 2, 4
if (a == 4) or (b != 4):
print 'gagné'
elif (a == 4) or (b == 4):
print 'presque gagné'

a=1
if not a:
print 'gagné'
elif a:
print 'perdu'

Et, celui-ci, avec un peu d'aléatoire :

import random
for i in range(100):
a = random.randint(0,10)
if not a:
print 'gagné'
elif a:
print 'perdu'

Copyright © IREM de la Réunion Page 3/11


Exercices de base avec Python

Python, les bases : écriture de code


Calcul simple avec des variables numériques

• Écrire un programme qui calcule le volume d'un parallélépipède rectangle dont sont fournis au départ la largeur,
la hauteur et la profondeur.

# Ouvrir un terminal et taper la commande python


>>> # -*- coding: utf-8 -*- # Cette première ligne est nécessaire dès l'utilisation de caractères accentués.

>>> l=input("Entrez la largeur : ")


>>> h=input("Entrez la hauteur : ")
>>> p=input("Entrez la profondeur : ")
>>> print("Volume du parallélépipède = "+str(l*h*p))

Sortie du code :

# Ouvrir un terminal et se déplacer dans le répertoire où se trouve le programme Python que l'on a appelé pour
l'exemple VolumeParallelepipedeRectangle.py.
> python './VolumeParallelepipedeRectangle.py'
Entrez la largeur : 7
Entrez la hauteur : 4
Entrez la profondeur : 8
Volume du parallélépipède = 224
>

Utilisations de la boucle for

Suite géométrique de raison 3

• Écrire un programme qui affiche une suite de 12 nombres dont chaque terme soit égal au triple du terme
précédent.

a=input("Entrez un nombre : ")


for i in range(12):
print(i+1,a)
a=a*3

Résultat du programme :

# Ouvrir un terminal et se déplacer dans le répertoire où se trouve le programme Python que l'on a appelé pour
l'exemple SuiteDe12Triples.py.
>python './SuiteDe12Triples.py'
Entrez un nombre : -2
(1, -2)
(2, -6)
(3, -18)

Copyright © IREM de la Réunion Page 4/11


Exercices de base avec Python
(4, -54)
(5, -162)
(6, -486)
(7, -1458)
(8, -4374)
(9, -13122)
(10, -39366)
(11, -118098)
(12, -354294)

Multiples de 7

• Écrire un programme qui affiche les 20 premiers multiples de 7.

# Dans un terminal python :


>>>
>>> for i in range(0,20):
... print(7*i)
...
0
7
14
21
28
35
42
49
56
63
70
77
84
91
98
105
112
119
126
133
>>>

Pour avoir les 20 premiers multiples de 7 non nuls, on fera :

>>>
>>> for i in range(1,21):
... print(7*i)
...
7
14
21
28

Copyright © IREM de la Réunion Page 5/11


Exercices de base avec Python
35
42
49
56
63
70
77
84
91
98
105
112
119
126
133
931
>>>

On peut améliorer l'affichage du résultat en utilisant des chaînes de caractères et donc la fonction str() qui
transforme un entier en string.

>>> for i in range(20):


... print(" "+str(i)+"*7 = "+str(i*7))
...
>>>

Sortie du code :

# Ouvrir un terminal et se déplacer dans le répertoire où se trouve le programme Python que l'on a appelé pour
l'exemple MultiplesDe7.py.

> python './MultiplesDe7.py'


0*7 = 0
1*7 = 7
2*7 = 14
3*7 = 21
4*7 = 28
5*7 = 35
6*7 = 42
7*7 = 49
8*7 = 56
9*7 = 63
10*7 = 70
11*7 = 77
12*7 = 84
13*7 = 91
14*7 = 98
15*7 = 105
16*7 = 112
17*7 = 119
18*7 = 126

Copyright © IREM de la Réunion Page 6/11


Exercices de base avec Python
19*7 = 133
>
• Écrire un programme qui affiche les 20 premiers termes de la table de multiplication par 7, en signalant au
passage (à l'aide d'une astérisque) ceux qui sont des multiples de 3.

chaine=""
for i in range(20):
multiple=(i+1)*7
if multiple%3 == 0:
chaine+=" "+str(i+1)+"*7 = "+"*"+str((i+1)*7)+"\n"
else:
chaine+=" "+str(i+1)+"*7 = "+str((i+1)*7)+"\n"
print(chaine)
>>>

Sortie du code :

# Ouvrir un terminal et se déplacer dans le répertoire où se trouve le programme Python que l'on a appelé pour
l'exemple MultiplesDe7AvecMarquageSiMultipleDe3.py.

> python './MultiplesDe7AvecMarquageSiMultipleDe3.py'


1*7 = 7
2*7 = 14
3*7 = *21
4*7 = 28
5*7 = 35
6*7 = *42
7*7 = 49
8*7 = 56
9*7 = *63
10*7 = 70
11*7 = 77
12*7 = *84
13*7 = 91
14*7 = 98
15*7 = *105
16*7 = 112
17*7 = 119
18*7 = *126
19*7 = 133
20*7 = 140
>

Concaténation multiple d'une chaîne de caractères

• Écrire un programme qui affiche la suite de symboles suivante :

*
**
***
****

Copyright © IREM de la Réunion Page 7/11


Exercices de base avec Python
*****
******
*******

a='*'
for i in range(7):
print(a*(i+1))

Conversion de monnaies

Écrire un programme qui affiche une table de conversion de sommes d'argent exprimées en euros, en dollars
canadiens. La progression des sommes de la table sera « géométrique », comme dans l'exemple ci-dessous :

1 euro(s) = 1.65 dollar(s)


2 euro(s) = 3.30 dollar(s)
4 euro(s) = 6.60 dollar(s)
8 euro(s) = 13.20 dollar(s)

etc. (S'arrêter à 16384 euros)

s=1
coeff=input("Entrez le cours du dollar canadien : ")
while s <= 16384:
print(str(s)+" euro(s) = "+str(s*coeff)+" dollar(s) ")
s = s *2

Résultat du programme :

# Ouvrir un terminal et se déplacer dans le répertoire où se trouve le programme Python que l'on a appelé pour
l'exemple EurosEnDollars.py.
> python './EurosEnDollars.py'
Entrez le cours du dollar canadien : 1.39
1 euro(s) = 1.39 dollar(s)
2 euro(s) = 2.78 dollar(s)
4 euro(s) = 5.56 dollar(s)
8 euro(s) = 11.12 dollar(s)
16 euro(s) = 22.24 dollar(s)
32 euro(s) = 44.48 dollar(s)
64 euro(s) = 88.96 dollar(s)
128 euro(s) = 177.92 dollar(s)
256 euro(s) = 355.84 dollar(s)
512 euro(s) = 711.68 dollar(s)
1024 euro(s) = 1423.36 dollar(s)
2048 euro(s) = 2846.72 dollar(s)
4096 euro(s) = 5693.44 dollar(s)

Copyright © IREM de la Réunion Page 8/11


Exercices de base avec Python
8192 euro(s) = 11386.88 dollar(s)
16384 euro(s) = 22773.76 dollar(s)
>

Conversion de secondes en années, mois, jours, heures, minutes, secondes

• Écrire un programme qui convertisse un nombre entier de secondes fourni au départ en un nombre d'années,
de mois, de jours, d'heures, de minutes et de secondes.

On utilisera les opérateurs // (division entière) et % (modulo).

# -*- coding:utf8 -*-


# Le nombre de secondes est fourni au départ :
# (un grand nombre s'impose !)
nsd = 12345678912
# Nombre de secondes dans une journée :
nspj = 3600 * 24
# Nombre de secondes dans un an (soit 365 jours -
# on ne tiendra pas compte des années bissextiles) :
nspa = nspj * 365
# Nombre de secondes dans un mois (en admettant
# pour chaque mois une durée identique de 30 jours) :
nspm = nspj * 30
# Nombre d'années contenues dans la durée fournie :
na = nsd // nspa
# division <entière>
nsr = nsd % nspa
# n. de sec. restantes
# Nombre de mois restants :
nmo = nsr // nspm
# division <entière>
nsr = nsr % nspm
# n. de sec. restantes
# Nombre de jours restants :
nj = nsr // nspj
# division <entière>
nsr = nsr % nspj
# n. de sec. restantes
# Nombre d'heures restantes :
nh = nsr // 3600
# division <entière>
nsr = nsr % 3600
# n. de sec. restantes
# Nombre de minutes restantes :
nmi = nsr // 60
# division <entière>
nsr = nsr % 60
# n. de sec. restantes
print("Nombre de secondes à convertir : "+str(nsd))
print("Cette durée correspond à "+str(na)+" années de 365 jours, plus "+str(nmo)+" mois de 30 jours, "+str(nj)+"
jours, "+str(nh)+" heures, "+str(nmi)+" minutes et "+str(nsr)+ " secondes. ")

Copyright © IREM de la Réunion Page 9/11


Exercices de base avec Python
Résultat du programme avec vérification :

>python './SecondesEnAmjhms-Python2.py'
Nombre de secondes à convertir : 12345678912
Cette durée correspond à 391 années de 365 jours, plus 5 mois de 30 jours, 24 jours, 19 heures, 15 minutes et 12
secondes.
>

Exercices à faire
Exercices sur les chaînes de caractères

• Écrire un script qui détermine si une chaîne contient ou non le caractère « e ».

• Écrire un script qui compte le nombre d'occurrences du caractère « e » dans une chaîne.

• Écrire un script qui recopie une chaîne (dans une nouvelle variable), en insérant des astérisques entre les
caractères. Ainsi par exemple, « gaston » devra devenir « g*a*s*t*o*n »

• Écrire un script qui recopie une chaîne (dans une nouvelle variable) en l'inversant. Ainsi par exemple, « zorglub
» deviendra « bulgroz ».

• En partant de l'exercice précédent, écrire un script qui détermine si une chaîne de caractères donnée est un
palindrome (c'est-à-dire une chaîne qui peut se lire indifféremment dans les deux sens), comme par exemple «
radar » ou « s.o.s ».

Exercices sur les listes

• Soient les listes suivantes :


t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']
Écrire un petit programme qui crée une nouvelle liste t3. Celle-ci devra contenir tous les éléments des deux
listes en les alternant, de telle manière que chaque nom de mois soit suivi du nombre de jours correspondant :
['Janvier',31,'Février',28,'Mars',31, etc...].

• Écrire un programme qui affiche « proprement » tous les éléments d'une liste. Si on l'appliquait par exemple à la
liste t2 de l'exercice ci-dessus, on devrait obtenir : Janvier Février Mars Avril Mai Juin Juillet Août Septembre
Octobre Novembre Décembre

• Écrire un programme qui recherche le plus grand élément présent dans une liste donnée. Par exemple, si on
l'appliquait à la liste [32, 5, 12, 8, 3, 75, 2, 15], ce programme devrait afficher la phrase :
le plus grand élément de cette liste a la valeur 75.

• Écrire un programme qui analyse un par un tous les éléments d'une liste de nombres (par exemple celle de
l'exercice précédent) pour générer deux nouvelles listes. L'une contiendra seulement les nombres pairs de la
liste initiale, et l'autre les nombres impairs. Par exemple, si la liste initiale est celle de l'exercice précédent, le
programme devra construire une liste pairs qui contiendra [32, 12, 8, 2], et une liste impairs qui contiendra [5, 3,
75, 15].
Astuce : pensez à utiliser l'opérateur modulo (%) déjà cité précédemment.

Copyright © IREM de la Réunion Page 10/11


Exercices de base avec Python
• Écrire un programme qui analyse un par un tous les éléments d'une liste de mots (par exemple : ['Jean',
'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra'] ) pour générer deux nouvelles listes. L'une contiendra les
mots comportant moins de 6 caractères, l'autre les mots comportant 6 caractères ou davantage.

Copyright © IREM de la Réunion Page 11/11

Vous aimerez peut-être aussi