1 L`environnement Pyzo 2 L`environnement Idlex 3 Just to start

publicité
PCSI & MPSI- Champollion
TP1
Informatique pour Tous
TP : Informatique pour Tous
PCSI & MPSI – Champollion
Fiche no : 1
1
L’environnement Pyzo
Après avoir allumé l’ordinateur et que "Fenêtres" ait "fini son démarrage", cliquer sur l’icône
Pyzo.
On voit apparaître (entre autres choses) :
1. Fenêtre de commande en ligne (Interpréteur) : où l’on peut exécuter des commandes
2. Fenêtre d’éditeur de texte : où l’on peut regrouper les commandes et écrire des ligne de commande plus longues et plus complexes et surtout sauvegarder ces commandes dans un fichier
.py (Python standard)ou .pyw (Python windows)
3. Barre des menus : ne pas hésiter à faire connaissance avec les différents items et commandes.
4. Suivre sagement les explications de votre honorable professeur chargé du TP.
Pour plus d’efficacité, on met la fenêtre Pyzo et le fichier pdf du T.P. côte à côte, pour ce faire cliquer
avec le bouton droit sur la barre de commande (demarrer) puis choisir mosaique verticale.
2
L’environnement Idlex
Comme pour Pyzo, c’est un environnement de programmation complet, avec un interpréteur (un
shell), un éditeur comportant des fonctions d’aide à la programmation, (coloration syntaxique des
mots clés en Python, alignement automatique,...). Essayez le. Les fichiers créés avec IEP sont des
fichiers source, (des fichiers texte). On peut les ouvrir et les exécuter avec Idlex.
3
Just to start
Dans la suite on présente très (voire très très) sommairement quelques notions du langage Python
pour avoir un premier contact.
On exécute les instructions suivantes sur la fenêtre de commande en ligne :
1. Les variables et leurs types (élémentairement) :
Pour des raisons évidentes (lisibilité, efficacité . . . etc), on préfère leur donner des noms, cela
s’appelle une affectation.
Exemple : a←3.14159 (pseudo code) cela se traduit en Python par : a=3.14159 (ne pas
confondre l’affectation avec le signe égalité en mathématiques).
Les entiers (type int) :
>>>
>>>
>>>
>>>
>>>
# c e c i e s t un commentaire Python l e n e g l i g e
a =5
# on attr i b u e l e nom a au nombre ( ob j et ) 5
a
# a f f i c h e r l a valeur
type (a )
a=a +5
# deviner a?
Les flottants (type float) :
(1)
. . ./. . . Tournez S.V.P.
PCSI & MPSI- Champollion
TP1
Informatique pour Tous
>>> x =5.3
# on attr i b u e l e nom a au nombre (ou l ’ ob j et ) 5
>>> x
# a f f i c h e r l a valeur
>>> type (x )
Opérations mathématiques élémentaires : On vous laisse interpréter les résultats et deviner les
opérations sous-jacentes
>>> 3+3 -1
# f astoch e
>>> 2*32
# +f astoch e
>>> 13/6
# f astoch e
>>> 13//6
# ?
>>> 13%6
# ?
>>> 2**(6) # f astoch e
>>>> 2+3*6+2**4 -1
>>> 2^32
#
>>> a =4;
# quel e s t l e
>>> b =4.;
# quel e s t l e
>>> s1 = a+a # quel e s t l e
>>> s2 = a+b # quel e s t l e
type
type
type
type
de
de
de
de
a ?
b ?
s1 ?
s2 ?
Quantité et Variables logiques(boolean) (type bool) :
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
a =3; b =4
(a == b) # valeur l ogi q u e de l ’ e g a l i t e a = b : True s i v r a i False sinon
a != b
# t e s t e r s i a 6= b
a >b
a <= b
not(a == b )
# negation
(a == b) or (a <= b)
# l e ou l ogi q u e
(a == b) and (a <= b )
# l e et l ogi q u e
Chaînes de caractères (string) (type str) : c’est une séquence ordonnée de "caractères"
alphanumériques (et quelques signes de ponctuation). Les caractères sont entourés par des
apostrophes ’ ’ ou des guillemets " ".
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
Gaston1 = ’ Allo ␣ ... ␣ mais ␣ Allo ’
type ( Gaston1 )
Gaston2 = "Pt - etre ␣ bien ␣ qu ’c ’ est ␣ important ␣!"
len ( gaston1 )
# longueur de l a chaine
Gaston1 [0]
Gaston1 [9]
Gaston1 [ -1]
Gaston2 [ -1]
Gaston2 [ -6]
Tuples :Séquences d’objets ordonnés et entourés par des parenthèses : t=(5,7,"toto")
Listes :Séquence d’objets ordonnés et entourés par des crochets (sinon le capitaine se fâche) :
ls=[51,7,"toto",’tata’]
2. Encore quelques notions :
(a) Demander (input) et afficher (print) :
(2)
. . ./. . . Tournez S.V.P.
PCSI & MPSI- Champollion
TP1
Informatique pour Tous
>>> Nom = input ( ’ Give ␣ your ␣ name : ’ ); type ( Nom )
>>> a = input ( ’ Donner ␣ votre ␣ age : ’)
>>> type (a) # Ah mais que se passe−t− i l ?
>>> a = int ( input ( ’ Donner ␣ l ’ annee de votre naissance : ’ ))
>>>␣x = float ( input (" Donner ␣ la ␣ duree ␣ en ␣ annees :"))
>>>␣ print (" Dans ␣ ",x , ’ annees ( ans ), ’ ,Nom ," ␣ aura ␣ ",a +x)
(b) Affectation (plus profondément) :
>>> a ,b , c =2 ,3.4 , " coucou "
>>> x =y =2013
# affectation parallele
# a f f e c t a t i o n simultanee
(c) Répéter un nombre déterminé de fois (for) :
Traitons un exemple : Les carrés des entiers dans[[ 0; 7 [[
pour n allant de 0 à 7(exclu) faire
afficher(n2 )
fin
>>> f o r n i n range (7):# ⇐⇒ n ∈ [ 0; 6 ] ( pas de 7 quoi )
...
p r i n t (n **2)
(d) Répéter avec condition d’arrêt (while) :
Encore un exemple, cherchons la plus petite puissance de 2 supérieure égale à un nombre
donné :
Donner le nombre x
s←0
psd = 1
tant que psd < x faire
s←s+1
psd = 2.psd
fin
Traduction en Python
>>> x = float ( input ( ’ Donner ␣ un ␣ nombre ␣( positif )␣ x= ’ ))
>>> s =0; psd =1;
>>> while psd <x:
# Attention deux p oi n ts :
...
s=s +1
...
psd =2* psd
# Attention indentation
p r i n t ( ’La ␣ plus ␣ petite ␣ puissance ␣ de ␣ 2␣ superieure␣ a␣ ’,x , ’␣ est : ’,s)
(e) Faire des choix, if, elif et else :
>>>
>>>
...
...
...
...
...
a = int ( input ( ’ Donner ␣ un ␣ entier : ’))
i f a !=0:
# Attention aux deux p oi n ts :
p r i n t (a , ’␣ est ␣ multiple ␣ de ␣3 ’)# Attention a l ’ indentation
e l i f a !=1:
p r i n t ( ’␣ 1␣ reste ␣ de ␣ division ␣ de ␣ ’,a , ’␣ par ␣3 ’)
else :
p r i n t ( ’␣ 1␣ reste ␣ de ␣ division ␣ de ␣ ’,a , ’␣ par ␣3 ’)
Il est pénible de taper tout ça dans l’interpréteur, d’où la nécessité absolue de passer par
l’éditeur de texte (i.e. écrire dans un fichier puis l’exécuter).
(3)
. . ./. . . Tournez S.V.P.
PCSI & MPSI- Champollion
3.1
TP1
Informatique pour Tous
Un peu de Maths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Qd même
Les fonctions mathématiques usuelles ne sont pas immédiatement disponibles au démarrage de
Python. Elles sont stockées dans des fichiers spécialisés (appelés modules), que l’on charge en mémoire
pour les utiliser. Celui des mathématiques (il y en a d’autres) est le module math. Voici quelques
exemples :
>>> 2* pi
>>> exp (1)
>>> import math # I l y a d ’ autres methodes qu ’ on verra plus tard
>>> math . pi
# the famous number π ≈ 3.14159 · · ·
>>> math . exp (1) # the second famous number e ≈ 2.718 · · ·
>>> math . cos ( math . pi )# ?
√
>>> math . sqrt (3)# 3
>>> math . floor ( math . pi +6.3)
>>> help ( math . floor ) # English i s i n use with Python
>>># pour a f f i c h e r toutes l e s f o n c t i o n s contenues dans l e module
>>> dir ( math )
4
Exercices
Exercice 1 [Correction] En utilisant l’interpréteur, afficher les valeurs des expressions suivantes :
5+2; 5*4; 2.1/5; 17//15; 17/5; 17%5
Commencer par écrire les expressions ligne par ligne, puis tout écrire sur une même ligne de l’interpréteur.
Écrire la ligne des expressions précédentes dans un fichier (i.e. avec l’éditeur), sauvegarder puis exécuter.
Que remarque t-on ? Comment y remédier ?
Exercice 2 [Correction] Observer les scripts suivants, les traduire en Python et interpréter les résultats obtenus :
1.
2.
x←
y←
x←
y←
x←
3
5
x+ y
x-y
x-y
3.
x← 3
y← 5
tmp← x
x← y
y← tmp
x← 3
y← 5
x , y←y ,x
Préciser les avantages et les inconvénients de chaque méthode.
Exercice 3 [Correction] Dans l’éditeur taper les instructions dans un fichier, deviner (ou prédire) les valeurs
affichées par x, y, puis les vérifier en exécutant le script.
1. x =10
y =5
z= x+ y
x= y
y= z
p r i n t (x +y+ z)
x =45
y =5
x= y
y= x
2.
3.
y =5
z= x
x= y
y= z
x =45
(4)
. . ./. . . Tournez S.V.P.
PCSI & MPSI- Champollion
TP1
Informatique pour Tous
Exercice 4 [Correction] Deviner, avant exécuter, les valeurs affichés par ce script (on utilise l’interpréteur)
1. x=’TrUc’; y=’tRuC’; x[1]; y[2]; x[4]; x[-4]; print(x,y)
2. t=[6,12,"aieu"]; t[-1]; t[0]; t[2]; t[2][1];
Exercice 5 [Correction] Écrire un script en Python qui demande à l’utilisateur la valeur de la température en
Degrés Celsius et renvoie l’équivalent en Fahrenheit.
Écrire un script en Python qui demande à l’utilisateur la valeur de la température en Degrés Fahrenheit et renvoie
l’équivalent en Celsius.
Exercice 6 [Correction] Deviner ce que doit afficher chaque script avant de l’exécuter :
#−− s c r i p t (1)
i f 10**2 <99:
p r i n t (" Pif " )
#−− s c r i p t (2)
i f 5**2 >20:
p r i n t ( ’ Pouf ’)
#−− s c r i p t (3)
i f 10**2 <99 or 5**2:
p r i n t (" No ␣ Money ␣ No ␣ Honey ")
#−− s c r i p t (4)
i f 10**2 <99:
p r i n t (" Pif " )
i f 5**2 >20:
p r i n t ( ’ Pouf ’)
#−− s c r i p t (5)
i f 10**2 <99:
p r i n t ( ’ The ␣ winner ␣ is ␣ MPSI ’)
else :
p r i n t ( ’ The ␣ winner ␣ is ␣ PCSI ’)
Exercice 7 [Correction] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Année bissextile.
Écrire un code Pyhton, qui suite à une valeur donnée par l’utilisateur indique si l’année est bissextile ou non.
On rappelle qu’une année est bissextile ssi elle est divisible par 4 mais pas par 100 ou divisible par 400.
Ind. 1900 n’est pas bissextile par contre 2000 et 2004 le sont.
Exercice 8 [Correction] Saisir le code ci-dessous, deviner les valeurs que doivent afficher i et somme puis le
vérifier en exécutant le script :
somme =0
f o r i i n range (5 ,18):# c . a . d . i ∈ N ∩ [5; 18[
i f i %3=0:
somme = somme + i
#
(5)
. . ./. . . Tournez S.V.P.
PCSI & MPSI- Champollion
TP1
Informatique pour Tous
Exercice 9 [Correction] Écrire un script qui calcule la somme des carrés des entiers compris entre 5 et 100.
Modifier le script précédent afin de calculer la somme des carrés d’entiers compris entre deux bornes données par
l’utilisateur.
En modifiant à nouveau le script, trouver le plus petit entier n tel que
k=n
X
k=0
k2 > 2013 × 2014
Exercice 10 [Correction] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un peu de tourisme.
Si vous avez encore du temps résolvons une petite énigme
Le burj Khalifa est un gratte-ciel situé à Dubaï, devenu le 27 mars 2008 la plus haute structure du monde. La
version finale mesure 828 m de haut et compte 160 étages habitables.
Un industriel souhaite vanter la solidité de ses verres "incassables".
En vue d’une prochaine publicité, il désire savoir (exactement) l’ étage le plus haut de la burj Khalifa qui
n’entrainera pas une fin en petits morceaux de l’un de ses verres, après une chute (malencontreuse).
Il n’a malheureusement à sa disposition que deux (et seulement deux) prototypes identiques de ses verres
"incassables".(le coût de production du prototype de ce verre "incassable" est exorbitant).
Quel est le nombre minimum d’ essais qu’il doit effectuer pour déterminer avec certitude l’étage maximal
certifiant son verre "incassable" ?
Vous pouvez taper le code suivant qui donne la solution au problème
n =160
t =[0 ,1] #t e s t une l i s t e
f o r i i n range (2 , n +1):
t. append (i) #ajoute i à l a f i n de t
f o r p i n range (1 , i ):
temp = max (p ,t [i - p ]+1)
i f temp < t[ i ]: t [i ]= temp
t[n] #Pour i entre 1 et n
#t [ i ] con ti en t l e nombre d ’ e s s a i s pour i é tages
Pouvez vous expliquer pourquoi ?
Tapez dans l’interpréteur :
t[1:23]
Que constatez-vous ? En utilisant la propriété qui semble apparaître proposez un code s’inspirant de celui de
l’exercice 9 qui :
• Demande à l’utilisateur d’entrer un étage n
• affiche le nombre minimal d’essai à réaliser avec 2 vitres
Si vous avez encore du temps.... Montrez la propriété sur laquelle se fonde le code précédent
Reprenez l’exercice avec 3 vitres
(6)
. . ./. . . Tournez S.V.P.
PCSI & MPSI- Champollion
Solution 5 (Énoncé)
Correction
7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Celsius⇆Fahrenheit
tmpc = float ( input ( ’ Donner ␣ la ␣ temp \ ’{ e } rature ␣ en ␣ Celsius ’))
tmpf =1.8* tmpc +32
p r i n t ( ’La ␣ temp \ ’{ e} rature ␣ en ␣ Fahrenheit␣ est : ’ , tmpf )
#−−−−−−−−−−−−−−
tmpf = float ( input ( ’ Donner ␣ la ␣ temp \ ’{ e } rature ␣ en ␣ Fahrenheit ’))
tmpc =( tmpf -32)/1.8
p r i n t ( ’La ␣ temp \ ’{ e} rature ␣ en ␣ Fahrenheit␣ est : ’ , tmpc )
Solution 7 (Énoncé)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Année bissextile.
year = int ( input ( ’ Give ␣ the ␣ year ␣ number ␣ please : ’ ))
i f ( year %4==0 and year %100!=0) or ( year %400==0):
p r i n t ("L ’ annee ␣" , year ,"␣ est ␣ bissextile")
else :
p r i n t ("L ’ annee ␣" , year ,"␣ est ␣ non ␣ bissextile" )
Solution 10 (Énoncé)
• Une simple indication. Si on lache la première vitre de l’étage p, soit elle se casse, et la seule procédure qui
reste est de tester tous les étages depuis le premier, soit elle ne se casse pas et il reste n − p étages à tester
• Il semble que il y ait
• 1 étage nécessitant 1 test
• puis 2 étages nécessitant 2 tests
• puis 3 étages nécessitant 3 tests
• ..................................
FIN
Téléchargement