TP 1 : Premiers pas avec python et IEP

publicité
T.P. 1 : Premiers pas avec python et I.E.P.
1) Pour démarrer : à partir du bureau, savoir lancer un Terminal.
Dans le Terminal, taper iep & pour lancer IEP. A quoi sert le & ?
2) Présentation des zones de travail de I.E.P.
• Le shell est au dessus (si jamais il est de côté, on peut le bouger en cliquant sur le haut de
la fenêtre de shell). Il permet de rentrer des instructions en ligne de commande.
• En dessous la fenêtre fichier (si elle n’existe pas Ctrl-N ou menu déroulant Fichier). Elle
permet de manipuler un fichier texte, qui contiendra le code qu’on exécutera dans un second
temps.
• A côté le File Browser. Savoir faire attendu : modifier le chemin du File Browser pour que
le chemin soit celui de la clé USB perso : tous les fichiers sauvegardés le seront sur la clé.
3) Expérimentation en python 2 et python 3
Retour sur le pb. de la division des entiers en python 2 et python 3, évoqué en cours.
• Savoir faire attendu : savoir choisir la version de python dans le shell et utiliser deux shell.
• Que donne float(5/2) en python 2 ? Pourquoi ?
• Comment obtenir vraiment 5/2 comme float alors ?
Une moralité : comme la commande // existe aussi en python 2 et fait la même chose qu’en
python 3, il faut toujours l’utiliser même en python 2 ainsi nos scripts seront compatibles sur
les deux versions, pour ce qui est de la manipulation des entiers.
Pour la manipulation des réels, en revanche, il faudra être prudent en python 2.
4) Importation de module, le module math
• Importer le module math des deux façons vues en cours, dans deux shell différents.
• Faire afficher toutes les commandes du module math.
• Essayer l’aide pour comprendre à quoi servent les fonctions listées. Par exemple : help(log1p).
• Un exemple qui montre que l’importation de tout le module n’est pas neutre : la commande
pow.
Comparer help(pow) sans charger le module math et en le chargeant : on perd une fonctionnalité intéressante !
Moralité : l’importation de tout un module sous la forme from math import * n’est pas anodine,
elle peut avoir des conséquences inattendues, comme la modifications de fonctions déjà définies,
ou de variables comme e
5) Les structures conditionnelles : if ... elif .. else
• un point sur la syntaxe :
if condition1 : # le : a valeur de then
instruction
instruction # toutes les instructions indentées sous la condition 1
# sont exécutées si condition1 est vraie .
elif condition2 : # le elif est très puissant , il évite le if en cascade !
instruction
else instruction
1
• Exercice sur les années bissextiles donné dans le cours.
– Rappel du cours sur la commande input : sa syntaxe, ce qu’elle fabrique.
– La vraie définition d’une année bissextile :
Les années bissextiles sont les années multiples de 4 sauf les années divisibles par 100
(les années séculaires) qui ne sont pas divisibles par 400. Ainsi 2000 était bissextile, mais
1900 ne l’était pas et 2100 ne le sera pas non plus.
– Faire un programme qui demande de rentrer une année et répond si elle est bissextile
ou non : d’abord avec des if ... elif.. else puis seulement avec des or and en
fabriquant alors un booléen qui répond True ou False comme il se doit.
6) Les premières boucles
6.1. Boucles conditionnelles : while Supposons qu’on veuille chercher pour tout nombre N ,
le plus petit entier n tel que 2n ≥ N . On peut utiliser le programme qui suit :
n =0 # initialisation nécessaire
while 2** n <= N : # bien noter le : à la fin de la ligne et l ’ indentation après .
n = n +1 # itération
Dans ce script :
• la variable n sert de compteur, qui vaut 0 avant le début de la boucle.
• l’instruction d’affectation n=n+1 dit qu’on incrémente i.e. augmente de n de 1 à chaque étape,
tant que (le while) la condition 2**n<=N est réalisée.
• A l’arrêt de la boucle : notons nf le plus grand entier tel que 2nf ≤ N . Quand le compteur n
arrive à la valeur nf , la condition sur laquelle porte le while est encore réalisée, donc le
programme exécute encore la commande n=n+1. A ce moment-là, on a n = nf + 1. Quand la
variable n est de nouveau testée pour la condition 2**n<=N , la condition n’est plus vérifiée :
on sort de la boucle.
La valeur de n obtenue est bien nf + 1, c’est-à-dire le plus petit entier n tel que 2n > N .
Exercice d’application :
● Ecrire un test pour savoir si un nombre est premier à l’aide d’une boucle while.
● Ecrire un algorithme qui renvoie le reste de la division euclidienne de deux nombres a et b
sans utiliser la commande % de python, mais seulement des additions et des différences.
6.2. Boucles for
Si l’on veut afficher tous les nombres de 1 à 10
for i in range(1,11) : # eh oui en python il faut un range jusqu’à 11 pour s’arr^
eter à 10
print(i)
# bien noter le : à la fin de la ligne et l’indentation à la ligne d’après.
Exercice d’application :
10
● Calculer une somme par exemple ∑ i2 , en python, à l’aide d’une boucle for.
i=1
● Regarder l’aide de la commande sum pour faire la même chose avec la commande sum de
python.
● Pour tous les nombres de 1 à 100 afficher s’il sont premiers à l’aide de votre algorithme du 6.1.
2
Téléchargement