Skip to content
\(\newcommand{\eps}{\varepsilon} \newcommand{\llbracket}{[\![} \newcommand{\rrbracket}{]\!]} \newcommand{\D}{\mathrm{D}} \newcommand{\C}{\mathbb{C}} \newcommand{\Q}{\mathbb{Q}} \newcommand{\R}{\mathbb{R}} \newcommand{\U}{\mathbb{U}} \newcommand{\K}{\mathbb{K}} \newcommand{\N}{\mathbb{N}} \newcommand{\M}{\mathrm{M}} \newcommand{\DL}{\mathrm{DL}} \newcommand{\rg}{\mathrm{rg}\,} \newcommand{\id}{\mathrm{id}} \newcommand{\GL}{\mathrm{GL}} \newcommand{\card}{\mathrm{Card}\,} \newcommand{\Det}{\mathrm{Det}} \newcommand{\union}{\cup} \renewcommand{\Im}{\mathrm{Im}\,} \renewcommand{\Re}{\mathrm{Re}\,} \newcommand{\Ker}{\mathrm{Ker}\,} \newcommand{\vect}{\mathrm{vect}} \newcommand{\inter}{\cap} \newcommand{\ch}{\mathrm{ch}\,} \newcommand{\sh}{\mathrm{sh}\,} \renewcommand{\th}{\mathrm{th}\,} \newcommand{\argch}{\mathrm{argch}\,} \newcommand{\argsh}{\mathrm{argsh}\,} \newcommand{\argth}{\mathrm{argth}\,} \newcommand{\Z}{\mathbb{Z}} \newcommand{\mfrac}[2]{\genfrac{}{}{0pt}{}{#1}{#2}} \newcommand{\cotan}{\mathrm{cotan}\,} \newcommand{\tr}{\mathrm{Tr}\,} \)

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

Si vous n’utilisez pas votre ordinateur personnel en TP d’informatique, vous devrez venir à chaque séance avec une clé USB.

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.

1. Créer le dossier ITC et le sous-dossier TP00-Pyzo+LangagePython : celui-ci contiendra les fichiers TP00-[a-z].py qui seront créés dans ce TP.

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.

  • La console : elle permet de lancer des commandes qui seront immédiatement interprétées et d’afficher le résultat de l’exécution d’un programme (ou éventuellement le message d’erreur rencontré durant l’interprétation de ce programme)
  • L’éditeur : seules les instructions écrites dans cette zone peuvent être sauvegardées : c’est donc cette zone qui nous servira à écrire les programmes. Dans l’éditeur de code, diverses aides sont fournies comme par exemple la coloration syntaxique automatique, une indentation automatique, la complétion automatique (avec la touche Tab).
  • Les outils personnalisables : ils peuvent être sélectionnés grâce au menu Outils (Tools) de Pyzo. On utilisera notamment :
    • L’outil « Environnement » (Workspace) qui permet de suivre l’état des différentes variables au cours de l’exécution du programme
    • L’outil « Aide interactive » (Interactive help) qui permet d’obtenir de l’aide sur la syntaxe des fonctions du langage ou des modules importés.

2. Lancer l’environnement de développement intégré (IDE) Pyzo. Nous travaillons d’abord sur la console python. La console peut être utilisée pour effectuer des calculs :

5/3; 5//3; 5∗3; 5∗∗3; 
5%3; 5e3 ;

Donner les résultats obtenus dans le tableau ci-dessous et expliquer chacun des symboles /, //, ∗, ∗∗, % et e en langage Python :

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 ».

3. La console permet également la déclaration de variable ou l’affectation. On notera d’ailleurs qu’en Python, la déclaration se confond avec la première affectation d’une variable.
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.

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.

4. Rechercher dans l’aide des informations sur les fonctions valeur absolue et racine carrée (utiliser help ou l’aide interactive). Effectuer quelques essais avec ces fonctions :
 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)

 

Expliquer la technique permettant d’importer le module pylab et de distinguer deux fonctions sqrt provenant de deux modules différents :

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.

5. Copier les lignes de code suivantes dans l’éditeur, enregistrer le fichier TP00.py dans votre répertoire de travail puis l’exécuter.

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
Pour ce faire, deux possibilités :

  • cliquer sur Exécuter → Exécuter le contenu de l’onglet courant (Ctrl+E sous Windows et Cmd+E sous MacOs)
  • cliquer sur Exécuter → démarrer le script (Ctrl+Shift+E sous Windows et Cmd+Shift+E sous MacOs).

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

6, On appelle entrée/sortie toute instruction qui permet d’interrompre le flux d’exécution du programme pour communiquer avec l’utilisateur, donnant ainsi un aspect interactif au programme.

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.

Si on note e l’état courant et \(i(e)\) l’état obtenu en exécutant l’instruction i, alors, après l’exécution des instructions \(i_1\) et \(i_2\), l’état obtenu est \(i_2(i_1(e))\).
Enchaîner deux instructions en séquence revient à composer (au sens mathématique) leurs deux actions sur l’état : en général, il n’y a pas commutativité des instructions dans une séquence.

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).

7. Donner la valeur de y affichée lors de l’exécution de la ligne 5 pour chacun des listings précédents.

  • L’expression située à droite du signe = est évaluée en fonction de l’état courant. Ici, l’interpréteur évalue la somme de la valeur de yet de 5 : dans un cas (listing 3) le résultat est 9 et dans l’autre (listing 4) le résultat est 8.
  • Dans un deuxième temps, l’interpréteur affecte à la variable dont le nom est yla valeur précédemment calculée.

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.

7. 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 :

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

Ce contenu est réservé aux étudiants de PCSI2.
CPGE du lycée Fabert -- METZ

Back To Top