Déroulement TP 2 : Premiers pas avec python et IEP

publicité
Déroulement T.P. 2 : Premiers pas avec python et I.E.P.
1) Savoir faire attendu : à partir du bureau Debian, savoir lancer un Terminal.
Dans le Terminal, taper iep & pour lancer IEP. A quoi sert le & ?
IEP signifie Interactive Editor for Python.
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 ?
Nous utiliserons exclusivement Python3, mais méfiez-vous que vos machines risquent parfois de
démarrer avec un shell 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 avec from ... import 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 pour else if .
instruction
else :
instruction
1
T.P. 2 : Exercice sur les années bissextiles
version plus détaillée de l’énoncé
• Introduction à la commande input : nous l’utiliserons peu par la suite, elle sera remplacée
par l’usage de fonctions mais pour aujourd’hui elle nous permettra de faire notre premier
programme : si on considère le code
reponse=input(’Entrez un nombre’)
l’exécution de ce code provoque, comme print, l’affichage du message Entrez un nombre
mais en plus le curseur reste dans le shell en attente d’une saisie au clavier. Vous rentrez un
nombre ou autre chose au clavier, et ce qui vous rentrez sera stocké dans la variable reponse.
Mettons qu’on rentre 17, si on regarde ce que contient reponse :
>>> reponse
’17’
on s’aperçoit que reponse n’est pas une variable integer mais comme elle est entourée de
quotes c’est une variable string i.e. chaı̂ne de caractères.
Le problème pratique pour nous est que si par exemple on veut définir un test booléen du
type :
reponse>20
que se passe-t-il ? Pourquoi ? Comment remédier à ce problème ?
• La 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.
2
TP 2 : Corrigé de l’exercice :
On présente deux méthodes
≪
extrêmes ≫, il est possible de combiner bien sûr if else et and,
or
● (M1) Avec les if : noter l’intérêt de l’ordre dans lequel les conditions apparaissent
annee=int(input(’Entrez une année’))
if annee%400==0:
print("bissextile")
elif annee%100==0:
print("non bissextile")
#N.B. dans ce cas annee est divisible par 100
# mais PAS par 400 gr^
ace au elif.
elif annee%4==0:
print("bissextile")
#dans ce cas annee n’est divisible
# ni par 400 ni par 100 (autrement dit par 100)
# mais est divisible par 4
Si on préfère les conditions négatives, on va dans l’ordre inverse :
annee=int(input("Entrez l’année de votre choix"))
if annee%4 !=0:
print("cette année n’est pas bissextile")
elif annee%100 !=0:
print("cette année est bissextile")
elif annee%400 !=0:
print("cette année n’est pas bissextile")
else:
print("cette année est bissextile")
● (M2) Avec les and, or :
annee=int(input("Entrez l’année de votre choix"))
test=(annee%4==0) and ((annee%100!=0) or (annee%400==0))
print(test)
Pour ≪ faire plus humain ≫, mais on ne s’intéressera pas beaucoup à ces détails
utilisateur ≫ dans nos programmes :
annee = int ( input ( " Entrez l ’ année de votre choix " ))
if ( annee %4==0) and (( annee %100!=0) or ( annee %400==0)):
print ( " cette année est bissextile " )
else :
print ( " cette année n ’ est pas bissextile " )
3
≪
d’interface
Téléchargement