- Introduction
- Le mode interactif
- Variables et affectations
- Programmation et fonctions
- Structure conditionnelle
- Boucles non bornées
- Les listes
- Boucles bornées
- Lire et écrire dans un fichier
- Application en SNT (en seconde)
Introduction au langage Python
Comme une calculatrice
Au contraire de l'utiliation de Scratch qui demande d'écrire des programmes en réponse à des événements : drapeau cliqué, touche pressée, sprite cliqué... chaque programme étant lié à un sprite, le langage Python ne fait qu'exécuter dans l'ordre, sans contexte, les instructions qui lui sont proposées.
Ainsi la console en Python (la scène de Scratch) permet non seulement de visualiser la trace de l'exécution d'un programme, mais aussi de proposer une à une des instructions à exécuter
En première approche, on peut donc utiliser une console python comme une calculatrice :
Opérateurs numériques
>>> 5 + 2 # Addition
7
>>> 5 - 2 # Soustraction
3
>>> 5 * 2 # Multiplication
10
>>> 5 / 2 # Division (décimale)
2.5
>>> 5 % 2 # Reste de la division euclidiene
1
>>> 5 // 2 # Quotient de la division euclidienne
2
>>> 5 ** 2 # Exponentiation
25
L'utilisation du symbole #
permet d'écrire des commentaires qui sont ignorés par l'interpréteur.
Pour les exercies de cette page, on pourra par exemple utiliser la console en ligne de basthon.
Exercice
Supposons disposer du platrau de jeu suivant, constitué de cases carrés de 8 pixels de côté. (Par exemple, la première case en haut à gauche s'étend des pixels $(x=0,y=0)$ à $(x=7,y=7)$)

Si l'utilisateur clique avec sa souris à la position $x=17$, $y=43$, comment calculer les numéros de la ligne et la colonne de la case correspondante ?
Si on numérote aussi les lignes et les colonnes en commençant par $0$, il suffit de faire les divisions :
>>> 17//8
2
>>> 43//8
5
Dans le langage courant, on répondrait donc : 6ème ligne et 3ème colonne.
Attention, on donne, le plus souvent, $x$ puis $y$ et, d'autre part, ligne puis colonne, mais le calcul sur $x$ donne la colonne et celui sur $y$ la ligne...
Exercice
Quel est le chiffre des unités de l’entier $2^{2023}$ ?
On peut résoudre l'exercice mathématiquement en remarquant (et en démontrant) que les puissances de deux ($2$, $4$, $8$, $16$, $32$, $64$, $128$, $256$, $512$, ...) ont, comme chiffre des unités : $2$, $4$, $8$ et $6$ qui reviennent indéfiniement dans le même ordre. Comme :
>>> 2023%4
3
alors la réponse est le troisième dans cette liste : $8$.
Mais on peut demander :
>>> 2**2023
963121833542317369601573845406471251262548645428284526828835768327851746644612875378048462019053502788803516653832734212104068969204751285764221918179043624419894139984279754512017898273159626328827668380262481220865017731267802600915375183179264380651165421367773563947903391466768557089792263481734108493385146063258300495764165365295546337808852673629710735621386935094923561594142327134318905856137785813985574356271679918694447015294481691849341917432346559501502683303082591585074576786963085039546446281095048723669230856548339087909922753762884060607659880382812905450025751549153093939827557015748608
Pour n'obtenir que la réponse attendu, il suffit de demander le reste dans la division par 10 :
>>> 2**2023 % 10
8
Avec des chaînes de caractères
Un programme informatique a pour but de traiter des informations. Dans le contexte numérique, une information, pour être traitée, est représentée par des nombres (entiers) : on parle de données. Il existe par exemple une norme : ASCII (American Standart Code for Information Interchange), toujours en vigueur depuis les années 1960, adoptée par l’« American National Standards Institute » (ANSI) et qui fait de la lettre A le caractère $65$. (de B le $66$...)
Le langage python, suivant bien sûr cette norme, possède une fonction permettant de retrouver la lettre d'un code ASCCI donné :
>>> chr(65) # chr pour character
'A'
>>> ord('A')
65
On voit que pour différencier un caractère du reste du code, et pour que python ne cherche pas à l'interpréter, il faut l'écrire entre apostrophes. On peut le faire, de manière générale, pour plus d'un caractère à la fois, pour former ce qu'on appelle une chaîne de caractères, notée str
pour string.
>>> type('A')
<class 'str'>
Ci-dessous quelques opérations permisent par ce type :
Manipulation des chaînes :
>>> 'Hello' + ' World' # Concaténation
'Hello World'
>>> 'Hello' * 2
'HelloHello'
>>> 'He' in 'Hello' # Test d'occurrence
True
>>> 'Hello'[1] # Extraction de caractère
'e'
>>> len('Hello') # Nombre de caractères
5
>>> int('65') # str vers int
65
>>> str(65) # int vers str
'65'
Exercice
Si on réécrit indéfiniment « Hip Hip Hip Hourra ! » :
'Hip Hip Hip Hourra ! Hip Hip Hip Hourra ! Hip Hip Hip Hourra !
...
Quel est le 2023ème caractère ?
On peut faire le calcul : la longueur de la chaine répétée est
>>> len('Hip Hip Hip Hourra ! ')
21
Attention à bien mettre l'espace à la fin qui est aussi un des caractères répétés !
On en déduit la position du caractère avec le caclul :
>>> 2023%21
7
La septième lettre est :
>>> 'Hip Hip Hip Hourra ! '[6]
'p'
Attention à bien mettre l'indice $6 = 7 - 1$ car le premier indice est $0$ !
En une ligne :
>>> 'Hip Hip Hip Hourra ! '[2023%len('Hip Hip Hip Hourra ! ')-1]
'p'
Une autre solution : on peut faire effectivement la répétition (attention à l'espace à la fin) et regarder directement la 2023ème lettre (indice 2022) :
>>> ('Hip Hip Hip Hourra ! ' * 2023)[2022]
'p'
Exercice
Quel est le 223ème chiffre dans l’écriture décimale de l’entier $2^{2023}$ ?
Même principe que l'exerice précédent, avec la chaine str(2**2023)
. Par exemple :
>>> int(str(2**2023)[222])
2