TP-Cours ITC 00
Découverte de Pyzo -- Éléments de langage Python
I. À la découverte de Pyzo, voyage en terre inconnue
I.1. Organisation de votre travail
Afin de pouvoir retrouver facilement tous vos fichiers, vous devez créer un dossier ITC sur votre clé USB ou sur votre ordinateur personnel.
Vous devez ensuite créer un sous-dossier pour chacun des TP traités. A la fin du premier semestre, l’arborescence de dossiers devrait ainsi ressembler à celle de l’image ci-contre.
Bref, chaque répertoire sera numéroté avec indication du thème abordé dans le TP. Les thèmes abordés au premier semestre sont :
– la recherche séquentielle dans un tableau – les boucles imbriquées – les algorithmes dichotomiques – les fonctions récursives – les algorithmes gloutons – les matrices de pixels et images – les tris.
I.2. Pyzo : console Python, affectation de variables et typage dynamique
Pour écrire et exécuter des programmes informatiques en langage Python, nous utiliserons cette année l’environnement de développement intégré (IDE) Pyzo. Par défaut, la fenêtre de Pyzo est divisée en trois zones : la console, l’éditeur et une dernière zone d’outils personnalisables.
Une variable permet de stocker des données pour les réutiliser ensuite. Une variable apparaît dans un langage de programmation sous un nom de variable à peu près quelconque (il y a cependant ce- raines règles : retenez pour l’instant qu’un nom de variable doit commencer par une lettre), mais pour l’ordinateur il s’agit d’une référence désignant une adresse mémoire, c’est-à-dire un emplacement précis dans la mémoire vive de l’ordinateur où se trouve stockée la valeur de cette variable.
L’ensemble des variables définies à un instant donné de l’exécution d’un programme est appelé « état de l’exécution du programme ».
x = -2; x**2+1; (x,type(x)) y = 2.9; (y,type(y)) z = [x,y,2+1j]; (z,type(z)) a = (x<2); (a,type(a)) b = (x>1); (b,type(b)) t1= "C'est un serpent " t2 = "Python"
t1 + t2; (t1,type(t1)) c = (5,2.7); (c,type(c)) d = (5,2,7); (d,type(d)) roues = {"voiture" : 4 , "vélo" : 2 , "tricycle" : 3} roues [ "vélo" ] (roues ,type(roues))
Précisez les types de variables obtenus lors de l’exécution du code précédent en complétant le tableau ci-dessous : ce sont les types de variables principaux étudiés cette année.
Contrairement à d’autres langages informatiques (C++, Pascal …), le langage Python n’a pas besoin que l’on déclare à l’avance les variables ainsi que leur type. L’interprétateur attribue le type d’une variable « à la volée », lors de l’affectation. Cela signifie aussi qu’une variable peut voir son type évoluer au cours de l’exécution d’un programme. On parle de typage dynamique de Python.
I.3. Importation de modules dans le langage Python
On appelle module tout fichier constitué de code Python (c.-à-d. tout fichier avec l’extension .py) importé dans le langage Python pour offrir de nouvelles fonctionnalités.
Les modules permettent la séparation et donc une meilleure organisation du code. En effet, il et courant dans un projet de découper son code en différents fichiers qui vont contenir des parties cohérentes du programme final pour faciliter la compréhension générale du code, la maintenance et le travail d’équipe si on travaille à plusieurs sur un projet.
abs(1) ; abs(−2); x=−4; abs(x∗∗2) sqrt (2) ; sqrt (3) ; sqrt (10∗∗2) ; sqrt (0.1∗∗2)
Quel est le problème ? Et la solution ?
On est souvent amené à importer tout ou partie de modules dans le langage Python, mais at- tention ! Deux modules différents peuvent contenir des fonctions de même nom mais possédant des spécifications (le type et l’ordre de ses paramètres, le type de son résultat … ) différentes.
1j∗∗2; (1+1j)∗∗2; sqrt(3+4j) # Quel est le problème ? import pylab as pl; pl.sqrt(3+4j)
I.4. Éditeur et gestion des entrées/sorties
Nous allons utiliser maintenant l’éditeur intégré de Pyzo pour écrire du code Python que nous inter- préterons/exécuterons ensuite.
x=-4 # Étape 1 y = x**2 # Étape 2 y # Étape 3
a = sqrt(5) # Étape 1 b = sqrt(a**2+3) # Étape 2 b # Étape 3
La première option (Ctrl+E) interprète le code de l’éditeur dans la console Python courante (qui contient peut-être des variables définies par l’utilisateur) alors que la seconde option (Ctrl+Shift+E) interprète le code dans une nouvelle console dédiée et vierge de toute donnée de l’utilisateur.
Expliquer les différentes lignes du code précédent :
Lorsqu’une expression est évaluée dans l’éditeur, le résultat de cette évaluation n’est pas affiché automatiquement. L’interpréteur n’affiche ce résultat que si cela lui est demandé explicitement : à cet effet, on utilise la fonction print().
print(y) # Étape 3
print(b) # Étape 3
La fonction print permet d’afficher n’importe quel nombre de valeurs fournies en arguments (c’est-à-dire entre les parenthèses). Par défaut, ces valeurs seront séparées les unes des autres par un espace, et le tout se terminera par un saut à la ligne. Vous pouvez remplacer le séparateur par défaut (l’espace) par un autre caractère quelconque (ou même par aucun caractère), grâce à l’argument sep.
La fonction input provoque une interruption dans le programme courant. L’utilisateur est invité à entrer des caractères au clavier et à terminer avec . Lorsque cette touche est enfoncée, l’exécution du programme se poursuit, et la fonction fournit en retour une chaîne de caractères correspondant à ce que l’utilisateur a saisi. Cette chaîne peut alors être assignée à une variable quelconque.
II. Premiers pas en Python
II.1. Séquences d’instructions
Les instructions d’un programme s’exécutent les unes après les autres, dans l’ordre où elles ont été écrites à l’intérieur du script : c’est le flux d’exécution « naturel » d’une séquence d’instructions. Une séquence de plusieurs instructions est généralement appelé bloc d’instructions.
Il faut être extrêmement attentif à l’ordre dans lequel vous placez vos instructions les unes derrière les autres, car il s’agit d’une source d’erreurs très fréquente.
Exemple:
x = 1 x = x + 1 x = x * 2 y = x + 5 x = 2 print(y)
x = 1 x = x * 2 x = x + 1 y = x + 5 x = 2 print(y)
Dans une séquence, Python exécute les instructions de la première à la dernière, sauf lorsqu’il rencontre une instruction de contrôle de flux, comme une instruction conditionnelle (if
), une boucle conditionnelle (while
) ou inconditionnelle (for
) ou encore les fonctions (def
).
Conséquence de ce comportement : l’identifiant de y (obtenu par l’instruction id(y)
) n’a aucun rapport avec celui de x et lorsqu’on change la valeur de x, la variable y n’est pas affectée comme on peut le constater après exécution de la ligne 5 et affichage de la valeur de y sur la ligne 6.
On suppose que les variables a
et b
sont déclarées et contiennent des valeurs entières. La séquence d’instructions suivante se déroule entièrement :
a = 2*a - b b = a + b a = b - a b = b // 2
Décrire l’évolution de l’état des variables au cours de l’exécution de cette séquence sur divers exemples puis déterminer les valeurs finales des variables a et b en fonction de leurs valeurs initiales.
II.2. Structures de contrôle
II.2.a. Structures de contrôle : la sélection
Une instruction conditionnelle permet d’aiguiller le déroulement du programme dans différentes di- rections, en fonction des circonstances rencontrées. La commande if permet d’exécuter une séquence d’instructions si et seulement si une condition est vérifiée par l’état courant. En voici la syntaxe :
if condition: première instruction . . . . dernière instruction
Exemple 1
La commande if permet de tester la validité de la condition a > 100 placée entre parenthèses. Si la condition est vraie, alors le bloc d’instructions que nous avons indenté après le : est exécuté. Si la condition est fausse, rien ne se passe. Notez que les parenthèses utilisées ici avec la commande if sont optionnelles : nous les avons utilisées pour améliorer la lisibilité.
La condition évaluée après l’instruction if peut contenir la valeur True ou False : on dit qu’il s’agit d’une variable booléenne. En voici quelques exemples contenant les opérateurs de comparaison:
En langage Python, la syntaxe de test avec alternative est la suivante :
if condition : bloc d’instructions à exécuter si condition a la valeur True else : bloc d’instructions à exécuter si condition a la valeur False
Exemple 2
Enfin, dans le cas où l’on souhaite exprimer plus de deux alternatives dans une instruction conditionnelle, on peut utiliser la commande elif (contraction de else et de if) qui effectue également une sélection. La syntaxe de cette instruction conditionnelle étendue est la suivante :
Chacune des conditions condition1,. . . , conditionN est une expression booléenne qui doit pouvoir être évaluée au début de l’exécution de la commande if.
Dès que l’une des conditions est réalisée, le bloc d’instructions correspondant est exécuté et le pro- gramme passe à l’instruction qui suit toute la structure conditionnelle. Dans le cas où plusieurs condi- tions sont vérifiées, seule le bloc d’instructions correspondant à la première condition réalisée est exécuté.
Enfin, quand aucune des conditions condition1,. . . , conditionN n’est vérifiée, alors, s’il est présent, c’est « Autre bloc d’instructions » qui est exécuté.
Exemple 3
Exercice 1
Ce contenu est réservé aux étudiants de PCSI2.
CPGE du lycée Fabert -- METZ