Exercices TD Python
Télécharger PDFRecueil d'Exercices Corrigés Python
version 1.2
Décembre 2017
Avant-propos
Pour joindre le compilateur des exercices : k eric.berthomier@free.fr
Sources
— Les illustrations sont extraites du cours de Bob Cordeau et Laurent Pointal. Elles ont été réalisées par Hélène Cordeau.
— Les exercices sont inventés ou piochés au gré de mes clics sur la toile. Je citerai notamment : TiProf : http://tiprof.fr
L’ennui …
L’ennui est entré dans le monde par la paresse. - Jean de La Bruyère -
Aussi, afin d’éviter cette paresse, une fois fini l’ensemble des exercices, il est possible d’aller jouer aux Mathématiques Informatiques, en se rendant sur le site de mon cher ami Laurent Signac : https ://deptinfo-ensip.univ-poitiers.fr/pydefis/
Versions
Ce recueil évolue en fonction des demandes et de mon temps … toute contribution est la bienvenue.
Décembre 2014
Version initiale
1.0
Janvier 2016
Ajout d’exercices sur la récurrence les expressions régulières
1.1
Septembre 2017
Ajout d’exercice CRobot (POO) introduction du mot clé super()
1.2
Chapitre 1
Mise en bouche
Rappel des principales commandes
Typage type ()
Affectation =
Saisie input ()
Commentaires # Ceci est un commentaire
Avant de commencer…
La réalisation des ces travaux pratiques nécessite l’installation de Python 3 et pour plus de commodités de Notepad++ (Windows) ou Scite (Linux).
— Python : https://www.python.org/downloads/
— Notepad++ : http://notepad-plus-plus.org/fr/
— Scite : http://www.scintilla.org/SciTEDownload.html
Langage Python (Windows)
L’interpréteur est lancé par l’item correspondant ajouté dans le menu Démarrer à l’issu de l’installa tion.
Par exemple :
À l’aide de NotePad++, saisir le script suivant et l’enregistrer sous le nom hellow.py :
#! C:\Python34\python
# -*- coding: UTF-8 -*# pour spécifier le codage des caractères
print (5) # affichage de la valeur 5
a = 5
print (a) # affichage du contenu de a
print ("a = ", a) # affichage d'un message et du contenu de a
b = 5.50
print ("b = ", b) # affichage d'un message, du contenu de a et de b sur la même ligne
c = 5,50,14
print ("c = ",c)
texte="Mon texte"
print (texte)
print()
nom = input("Quel est votre nom : ")
print ("nom = ",nom)
# Affichage des types
print ()
print ("type de a: ",type(a))
print ("type de b: ",type(b))
print ("type de c: ",type(c))
print ("type de texte: ",type(texte))
print ()
print ("type de nom: ",type(nom))
Le chemin de l’exécutable Python est nécessaire pour que le script puisse désigner l’interpréteur qui doit exécuter ce dernier.
Remarque
✓ Une fois sauvé avec l’extension .py, le script s’exécute quand on clique sur son icône. Il est aussi possible d’exécuter le script en ligne de commande :
.\hellow.py
Langage Python (Linux)
L’interpréteur est lancé en ligne de commande par l’exécution de :
python
Cette commande peut être modifiée en fonction de la version, que l’on veut exécuter. À l’aide de votre éditeur favori, saisir le script suivant et l’enregistrer en hello.py :
#!/usr/bin/python3
# -*- coding: UTF-8 -*# pour spécifier le codage des caractères
print (5) # affichage de la valeur 5
a = 5
print (a) # affichage du contenu de a
print ("a = ", a) # affichage d'un message et du contenu de a
b = 5.50
print ("b = ", b) # affichage d'un message, et du contenu de b
c = 5,50,13
print ("c = ",c)
texte="Mon texte"
print (texte)
print()
nom = input("Quel est votre nom : ")
print ("nom = ",nom)
# Affichage des types
print ()
print ("type de a: ",type(a))
print ("type de b: ",type(b))
print ("type de c: ",type(c))
print ("type de texte: ",type(texte))
print ()
print ("type de nom: ",type(nom))
Le chemin de l’exécutable Python est nécessaire pour que le script puisse désigner l’interpréteur, qui est capable de l’exécuter.
Pour pouvoir exécuter le script, il faut en premier lieu rendre ce dernier exécutable.
chmod +x hellol.py
./hellol.py
Application directe du cours
1. Écrire un programme, qui définit 3 variables : une variable de type texte, une variable de type nombre entier, une variable de type nombre décimal et qui affiche leur type.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
chaine="ceci est une chaîne"
entier=12
decimal=15.0
print (type(chaine))
print (type(entier))
print (type(decimal))
2. Affecter dans une même ligne les 3 variables précédemment définies.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
chaine,entier,decimal=("ceci est une chaîne",12,15.0)
print (chaine, type(chaine))
print (entier, type(entier))
print (decimal, type(decimal))
3. Cet exercice est sans rapport avec le précédent …
Écrire un programme qui, à partir de la saisie d’un rayon et d’une hauteur, calcule le volume d’un cône droit : V =13 × π×r2 × h.
Comparer la précision de calcul avec votre calculatrice ou celle de l’ordinateur.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
from math import *
h=float(input("Hauteur : "))
r=float(input("Rayon : "))
V=1/3 * pi * r**2 * h
print ("Volume : ", V)
4. Une machine découpe dans une plaque, des disques circulaires de rayon rExt, percés d’un trou circulaire de rayon rInt avec rInt < rExt et ne débordant pas du disque.
Quelle est la surface d’un disque découpé ?
Guide :
(a) trouver les données
(b) effectuer les calculs
(c) afficher le résultat
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
from math import *
rayon_Ext = float(input("Rayon extérieur : "))
rayon_Int = float(input("Rayon intérieur : "))
sGrandDisque = pi * rayon_Ext**2
sDuTrou = pi * rayon_Int**2
surface = sGrandDisque - sDuTrou
print ("Surface du disque : ", surface)
Application réfléchie
1. Écrire un programme qui affiche le type du résultat des instructions suivantes :
— a=3
— a==3
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
aff1=a=3
aff2=a==3
print (aff1)
print (type (aff1))
print (aff2)
print (type (aff2))
2. Écrire un programme, qui ajoute une chaîne de caractères à un nombre entier (Exemple la chaîne ”le chat” et le nombre 3 pour donner le chat + 3).
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
entier = 35
chaine = "Ma chaîne"
somme = str(entier) + chaine
print (somme)
print (type(somme))
3. Écrire un programme, qui donne la mesure de l’angle α d’un triangle rectangle, dont on saisit le côté opposé et l’hypothénuse.
Rappel : sinφ = CoteOppose/Hypotenuse
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
from math import *
opp=float (input("Côté opposé : "))
hyp=float (input("Hypothénuse : "))
print ("angle : ",degrees (asin (opp/hyp)))
Application avancée
1. Écrire un programme qui réalise la saisie d’un nombre entier puis affiche la valeur ainsi saisie et son type. Essayer de dépasser la taille maximale des entiers (cf. cours C) avec Python 2 et 3. Expliquer.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
entier = int (input ())
print ("Entier : ",entier)
print ("Type : ",type (entier))
Si vous entrez une valeur élevée,
— sous Python 2, l’entier (int) se transformera en long automatiquement (suivant la version de Python).
— sous Python 3, l’entier (int) est conservé. Long n’existe plus
Pour plus d’informations, lire : http ://legacy.python.org/dev/peps/pep-0237/
2. Lors de la saisie d’un nombre par cast (int (input()) : indiquer une chaîne de caractères en lieu et place d’un nombre, rechercher comment éviter ce bug (aide : commande try)
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
while True:
try:
x = int(input("Veuillez saisir un nombre : "))
break
except ValueError:
print("Oops! Ceci n'est pas un nombre. Essayez de nouveau...")
print ("Ok !")
Pour plus d’informations, lire : https ://docs.python.org/3/tutorial/errors.html#handling-exceptions
Culture Générale
1. Quel autre mot courant de l’informatique est issu de la culture Monthy Python ? SPAM : http ://www.youtube.com/watch ?v=anwy2MPT5R
2. Qu’est-ce qu’un radian ?
Un angle d’1 radian est un angle, qui délimite un arc de cercle d’une longueur égale au rayon du cercle.
Chapitre 2
Conditions - Itérations - Répétitions
Rappel des principales commandes
Si if (condition):
Sinon Si elif (condition):
Sinon else:
Pour for variable in
Tant que while condition :
Longueur d’une chaîne len (chaine)
Application directe du cours
1. Écrire un programme min_max.py, qui demande de saisir 2 valeurs et qui affiche la plus petite des 2 valeurs.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
valeur1= int(input("Valeur 1 : "))
valeur2= int(input("Valeur 2 : "))
if ( valeur1 < valeur2 ) :
print ("Valeur la plus petite : %d " % valeur1)
else:
print ("Valeur la plus petite : %d" % valeur2)
2. Écrire un script longeur_chaine.py, qui demande de saisir 2 chaînes de caractères et qui affiche la plus grande des 2 chaînes (celle qui a le plus de caractères).
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
chaine1= input("Chaîne 1 : ")
chaine2= input("Chaîne 2 : ")
if ( len(chaine2) > len(chaine1) ) :
print (("Chaîne la plus grande : " + chaine2 ))
else:
print (("Chaîne la plus grande : " + chaine1 ))
3. Écrire le script fumeurs.py vu en cours, en le complétant par des saisies.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
str_fumeur = input ("Fumeur (oui / non) :")
age_fumeur = int (input ("Age du fumeur :"))
if (str_fumeur == "oui"):
facteur_f = 2
else :
facteur_f = 0
if (age_fumeur > 60):
facteur_a = 1
else :
facteur_a = 0
niveau_de_risque = facteur_f + facteur_a
if niveau_de_risque == 0:
print ("Le risque est nul !")
if niveau_de_risque != 0:
print ("Il y a un risque !")
if niveau_de_risque >= 3:
print ("Risque élevé !")
4. Écrire le script convertir.py, qui effectue une conversion euros en dollars.
— Le programme commencera par demander à l’utilisateur d’indiquer par un caractère ’E’ ou ’$’ la devise du montant qu’il va entrer.
— Puis le programme exécutera une action conditionnelle de la forme :
if devise == 'E' :
.........
elif devise == '$' :
..........
else :
.......... # affichage d'un message d'erreur
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
devise = input("Devise : ")
montant = int (input ("Montant : "))
# 1 euro = 1.27 $
facteur_euro_dollar = 1.27
if devise == 'E' :
print ("%f $" % (montant * facteur_euro_dollar))
elif devise == '$' :
print ("%f Euros" % (montant / facteur_euro_dollar))
else :
print ("Je n'ai rien compris") # affichage d'un message d'erreur
5. Écrire un programme, qui affiche 50 fois ”Je dois ranger mon bureau” à l’aide de l’instruction for.
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
for i in range (1,50):
print ("Je dois ranger mon bureau")
6. Chanson traditionnelle bretonne
La séquence d’instructions
n=10
print ("C'est dans %d ans je m'en irai j'entends le loup le renard chanter" % n)
permet d’afficher le message :
C’est dans 10 ans je m’en irai j’entends le loup le renard chanter
Écrire une boucle while qui permet d’afficher :
C’est dans 10 ans je m’en irai j’entends le loup le renard chanter
C’est dans 9 ans je m’en irai j’entends le loup le renard chanter
C’est dans 8 ans je m’en irai j’entends le loup le renard chanter
...