Vous êtes sur la page 1sur 3

Master Bio-Info 1° année TP Programmation & langage Python

TP 2. Structures de contrôle : for, if, while

Dans cette série, beaucoup d’exercices commencent par « Écrivez un script qui… » On veut désigner par là un
processus cyclique composé de plusieurs étapes :
 Analyse : comprendre le problème et inventer un algorithme pour sa résolution.
 Programmation (ou codage) : exprimer cet algorithme en langage Python et le saisir dans un module
(fichier nommé quelquechose.py) à l’aide d’un éditeur de texte.
Généralement, le script réalisé fournira des résultats dépendant de données qui ne sont pas figées dans le
code, mais qu’il faudra que le script lise, soit au clavier, soit dans un fichier.
 Test : exécution du module précédent sur des jeux de données pour lesquels la solution du problème est
connue, afin de vérifier que le script est correct. Ces jeux de données doivent être multiples et déterminés
avec soin afin de recouvrir tous les cas de figure possibles (ce qui comprend aussi les cas où les données
sont illégales). Pour exécuter un script python : python3 monScript.py

.1 Itérer sur une « séquence » - for - dict


A - Écrivez un script compterAcidesNucleiques.py qui travaille sur une chaîne de caractères représentant
une séquence ADN et qui en un seul parcours de cette chaîne détermine le nombre d’occurrences de chaque base
a, c, g, t présentes dans la séquence. N'utilisez pas la méthode count() des chaînes de caractères, mais utilisez
une boucle for. Ce script doit produire un dictionnaire associant à chaque acide nucléique, son nombre
d'apparitions dans la séquence. Vous devez ensuite simplement parcourir le dictionnaire (boucle for) et afficher
proprement les valeurs associées aux clés.
B – Complétez votre programme pour afficher le taux de GC.

.2 Itérer sur une suite de données - for


Suite de longueur connue. Écrivez un script calculerMoyenne.py qui affiche la moyenne d’une liste de
valeurs numériques. N’utilisez pas la fonction sum().

.3 Extrémums - for
Écrivez un script extremum2.py qui travaille sur une liste de nombres, et qui détermine, en un seul parcours de
la liste, et sans se servir des fonctions max() et min() :
A - le maximum (plus grande valeur) et le minimum de la suite.
B - même question avec en outre le nombre d’occurrences du min et du max dans la suite.

.4 Calculez les valeurs d'une fonction sur un intervalle - for - sys.argv


L'objet de l'exercice est de dresser un tableau de deux colonnes : dans la première on écrit des nombres x1, x2, …
xn régulièrement espacés, appartenant au domaine de définition de la fonction. Dans la deuxième colonne, en face
de chaque xi on écrit la valeur correspondante de la fonction yi = f(xi).
A - Écrivez un script qui calcule une fonction donnée (par exemple y = exp(x)), sur n valeurs prises dans un
intervalle [a, b[. Exemple d’affichage :
$ python3 calcul.py -2 1 6
fonction y = exp(x), 6 valeurs de -2.0 à 1.0
-2.00 0.1353
-1.50 0.2231
-1.00 0.3679
-0.50 0.6065
0.00 1.0000
0.50 1.6487
B - Modifiez votre script pour qu'il considère n valeurs dans un intervalle [a, b].

PyTP02.odt page 1 / 3
Master Bio-Info 1° année TP Programmation & langage Python

.5 Boucles imbriquées - for - sys.argv


A. Écrivez un script qui affiche tous les couples ( x , y ), x étant un entier compris entre 1 et p et y un entier
compris entre 1 et q ; p et q sont deux entiers acquis au clavier. L’affichage doit se faire comme sur l’exemple
suivant, qui correspond à p = 3 et q = 5 :
$ python3 touslescouples1.py 3 5
( 1, 1 ) ( 1, 2 ) ( 1, 3 ) ( 1, 4 ) ( 1, 5 )
( 2, 1 ) ( 2, 2 ) ( 2, 3 ) ( 2, 4 ) ( 2, 5 )
( 3, 1 ) ( 3, 2 ) ( 3, 3 ) ( 3, 4 ) ( 3, 5 )
Note : Pour que la fonction print( … ) n'affiche pas de retour à la ligne automatique en fin d'affichage,
indiquez que l'affichage se termine par la chaîne vide : print( … , end=""). Voir documentation
(http://docs.python.org/3/library/functions.html#print).
B. Variante : écrivez un script qui affiche tous les couples xy, où x est un caractère d’une chaîne s et y est un
caractère d’une chaîne t ; s et t sont deux chaînes lues au clavier. Exemple d’exécution :
$ python3 touslescouples2.py XYZ abcde
Xa Xb Xc Xd Xe
Ya Yb Yc Yd Ye
Za Zb Zc Zd Ze
C. Autre variation de A : écrivez un script qui affiche les couples (x, y), x étant un entier compris entre 1 et p et y
un entier compris entre 1 et q vérifiant x ≤ y ; p et q sont deux entiers acquis au clavier. Exemple :
$ python3 touslescouples3.py 4 6
( 1, 1 ) ( 1, 2 ) ( 1, 3 ) ( 1, 4 ) ( 1, 5 ) ( 1, 6 )
( 2, 2 ) ( 2, 3 ) ( 2, 4 ) ( 2, 5 ) ( 2, 6 )
( 3, 3 ) ( 3, 4 ) ( 3, 5 ) ( 3, 6 )
( 4, 4 ) ( 4, 5 ) ( 4, 6 )

.6 Une vieille connaissance - if ... elif ... else


Dans vos années de lycée vous avez sans doute rencontré l’équation du second degré : étant donnés trois
nombres a, b et c, il s’agit de déterminer les valeurs x pour lesquelles on a
ax2 + bx + c = 0
a, b et c sont les données du problème ; les valeurs de x pour lesquelles l’équation ci-dessus est vérifiée en sont
les solutions. Pour les obtenir il existe un algorithme bien connu, qui se présente sous la forme d’une suite de
choix :
 si a ≠ 0, calculer la quantité  = b2 − 4ac :
 b   b 
 si  > 0, il y a deux solutions, données par x1  et x2 
2a 2a

b
 si  = 0, il y a une seule solution x
2a
 sinon (alors  < 0), selon votre culture mathématique
 soit vous dites qu’il n’y a pas de solution réelle
 soit vous calculez et exhibez, puisque Python le permet, les deux solutions complexes
b  b 
x1 =  2a
+ j, x2 =  2a
− j
2a 2a

 sinon (alors a = 0, l’équation n’est pas du second degré, mais on va quand même traiter le cas) :
 si b = 0 (l’équation se réduit donc à « c = 0 »)
 si c ≠ 0, l’équation est impossible
 sinon, l’équation est inintéressante
c
 sinon, il y a une solution unique donnée par x
b

Exercice : écrivez un programme afficheRacines.py qui, à partir des valeurs a, b et c, calcule puis affiche
les solutions de l’équation du second degré correspondante ax2 + bx + c = 0. Il vous faudra utiliser la fonction

PyTP02.odt page 2 / 3
Master Bio-Info 1° année TP Programmation & langage Python

sqrt() (square root = racine carré). Elle se trouve dans le module math.py. Pour importer un module : import
math. Pour ensuite utiliser la fonction sqrt() de ce module : math.sqrt().

.7 La date du lendemain - if … elif … else


Écrivez un script demain1.py qui acquiert une date exprimée sous la forme de trois nombres j, m et a (le jour,
le mois et l’année) et qui détermine et affiche la date du lendemain. Exemple :
$ python demain1.py 28 2 2015
demain: 1 3 2015
$
Indications. L'idée est de décomposer le problème en 3 cas : soit nous sommes le dernier jour de l'année, soit
nous sommes le dernier jour d'un mois (autre que décembre), soit nous sommes un (autre) jour quelconque. Vous
aurez donc besoin de définir des fonctions vérifiant si une date donnée entre dans un cas donné. Vous pouvez
créer également une liste ou un tuple des mois de 30 jours et utiliser l'opérateur in, pour savoir si le mois donné
est dans cette liste. Vous pouvez aussi créer une variable indiquant si une année est bissextile (une année
bissextile est une année multiple de 400 ou une année multiple de 4 mais pas multiple de 100).
Vous pouvez supposer que les données saisies sont correctes (i.e. ce sont bien des nombres entiers et ils
expriment une date légitime).

Bilan
• Savoir :
◦ Écrire un script python, l'exécuter.
◦ Importer un module externe
• Connaître :
◦ La fonction range() et l'opérateur in
◦ Les opérations booléennes et les conditions (5.1, 5.2, 5.3 de la PLR)
◦ Le contenu du module math.py (PLR 9.2)
• Maîtriser :
◦ Le test if then elif else
◦ Les boucles for et son utilisation pour parcourir les éléments d’un iterable, ou leur position

PyTP02.odt page 3 / 3