1 - Introduction au language Python
Dans le cours d'ITC, on utilisera le language Python.
Cette page suppose que vous débutez entièrement le Python. Si vous êtes à l'aise, vous pouvez la survoler rapidement.
I. Expressions et variables
a) Calculs simples
En python, vous pouvez faire des calculs simples en utilisant les opérateurs usuels : +, -, *, /, ** (puissance), // (quotient de la division euclidienne), % (reste de la division euclidienne, ou modulo).
La fonction print(...) permet d'afficher le résultat d'un calcul.
Par exemple, pour calculer 2 + 3 et afficher le résultat, vous pouvez écrire :
Loading editor...
# Affiche le résultat de 2 + 3 print(2 + 3)
L'éditeur de code
Vous pouvez modifier le code dans la zone ci-dessus et cliquer sur le bouton "Run" pour exécuter le code et voir le résultat.
Exercice
En utilisant l'éditeur de code ci-dessus, affichez le résultat des opérations suivantes :
- le reste de la division euclidienne de
, par 3
En informatique, on appelle expression tout morceau de code auquel on peut donner une valeur.
Ainsi, à l'interieur de chaque print(...), vous avez mis des expressions.
On les distingues des instructions, qui sont des morceaux de code qui ne donnent pas de valeur, mais qui font quelque chose.
Par exemple, print(...) est une instruction. En Python, une instruction correspond globalement à une ligne.
b) Variables et conditions
Bon, si le python était juste une calculatrice, on ne ferait pas un cours dessus. Il y a donc des fonctionnalités plus avancées.
Les variables sont des "boîtes" dans lesquelles on peut stocker des valeurs, et auquelles on donne un nom.
Par exemple, pour créer une variable "taille", il suffit d'écrire : taille = 1.75. On pourra utiliser ensuite le nom de la variable pour se référer à sa valeur, ou bien la modifier.
Loading editor...
taille = 1.75 print(taille) taille = 2 * taille print(taille)
Opérateurs en-place
Pour chaque opérateur, il existe une version en place, c'est-à-dire qui modifie directement une variable. Ainsi, on peut écrire taille *= 2 à la place de taille = taille * 2.
De même avec +=, -=, %=, etc.
On peut également appliquer des conditions sur ces variables.
Loading editor...
taille = 1.99
if taille > 1.80:
print("Vous êtes plus grand.e que moi !")
elif taille == 1.80:
print("Et la pareil")
else:
print("Et là....")
Le if (qui signifie "si" en anglais) est suivi d'une condition (entre parenthèses), puis de :, ce qui signale le début d'un bloc.
Le contenu de ce bloc doit être indenté, c'est-à-dire décalé d'un cran sur la droite (la touche "tab" avec les deux flèches en haut à gauche du clavier, permet de directement décaler le curseur d'un cran).
Pour signaler la fin du bloc, on se redécale d'un cran sur la gauche.
Si la condition est vérifiée, tout le contenu du bloc suivant le if sera executé. Sinon, il sera simplement ignoré.
Lorsqu'on met un if, on peut de manière optionelle ajouter d'autres directives :
elifsignifie "sinon, si". Elle est suivie d'une condition, comme leif. Cette condition ne sera testée que si la condition duifa échoué.elsesignifie "sinon". Elle se place après toutes les autres, et s'executera quand aucune condition n'a été vérifié.
Exercice
Écrivez un bloc de code qui, étant donné la variable "entier" que l'on suppose comprise entre 0 et 2, affiche le numéro correspondant en français.
Loading editor...
entier = 1 #à compléter
Les types de données
On a principalement manipulé des nombres jusqu'à présent. Mais en pratique, chaque valeur a un type. Voici les principaux types de données :
- Les entiers (int): de
à exclu (c'est-à-dire qu'il n'y a pas de limite de taille, si ce n'est la taille de la mémoire de l'ordinateur). - Les flottants (float): il s'agit des nombres à virgule. Par défaut, vous pouvez considérer qu'il sont stockés à environ 10 chiffres significatifs.
- Les chaines de caractère (string): il s'agit des lettres, des mots, des phrases ... Elles sont délimitées par des guillements (
"..."ou'...'). Le+fonctionne sur les chaines de caractères. - Les booléens (bool): Ce sont des valeur spéciales, qui valent soit
True("vrai"), soitFalse("faux").
Lorsque j'ai écris pour le if, qu'il fallait une condition, cette condition est en fait un booléen, et donc on peut directement écrire ceci :
Loading editor...
suisje_vrai = False
if suisje_vrai:
print("Oui")
else:
print("Non")Manipulation de booléens
Comme on a +, -, *... sur les nombres, il existe un certain nombres d'opérateurs qui produisent des booléens :
and(et),or(ou) etnot(non) permettent de combiner ou de modifier des booléens avec la logique usuelle.==teste l'égalité entre deux valeurs de n'importe quel type, et renvoie vrai si elles sont égales. De même pour!=(différent de),<et>(inférieur et supérieur),<=et>=(inférieur ou égal, superieur ou égal).
Lorsqu'on combine tous ces opérateurs, il faut penser à bien parenthéser nos opérations !
Exercice
Complétez la condition suivante, pour que le code s'execute seulement si toutes ces conditions sont vérifiées :
Aa au moins trois fois l'age deBCest de couleur bleu- Parmis
AetB, l'un des deux n'est pas de couleur bleu
Loading editor...
age_A = 32
age_B = 5
age_C = 102
couleur_A = "rouge"
couleur_B = "bleu"
couleur_C = "bleu"
if ...: #remplacez les ... par votre condition
print("la condition est vérifiée !")
II. Les boucles
Imaginez que vous vouliez utilisez Python pour calculer la somme des entiers de 1 à 100. Vous pouvez écrire le code suivant :
somme = 0
somme += 1
somme += 2
somme += 3
somme += 4
...
somme += 100
print(somme)
mais ça risque d'être un peu long.
À la place, on a inventé un truc super : les boucles.
a) Les boucles for
On va voir deux types de boucles : for et while.
La boucle for tire son nom de l'expression pour ou pour chaque ... en anglais. Executez le code suivant et essayez d'en déduire ce qu'il fait :
Loading editor...
for i in range(10): print(i)
Pour faire simple, lorsqu'on écrit for variable in range(n):, suivi d'un bloc indenté, ce bloc se répétera pour chaque valeur entre 0 et n - 1, et la variable (souvent appelée i) prendra ces valeurs successives.
Fonctionnement avancé du for
En pratique, une boucle for parcours en faire une séquence d'élément.
Ainsi, on peut écrire for lettre in "bonjour": pour parcourir une à une les lettres de "bonjour".
Et range(n) représente en fait la séquence d'entiers allant de 0 à n-1 !
Loading editor...
for lettre in "bonjour": print(lettre)
Fonctionnement avancé du range
range possède quelques fonctionnalités supplémentaires : plutôt que de toujours parcourir la séquence d'éléments de 0 à n-1, on peut :
- choisir un point de départ : ainsi,
range(8, 43)représente la séquence de 8 à 43 (le début est inclu et la fin exclue !) - parcourir les éléments de
kenk(par exemple de 2 en 2) :range(0, 12, 3)parcours les éléments de 0 (inclus) à 12 (exclus) de 3 en 3. - enfin, il est possible de parcourir les éléments dans l'ordre inverse, en écrivant
range(11, -1, -1). Attention, si on veut s'arrêter à 0, il faut bien spécifier une fin à -1, vu que la fin est exclue !
Loading editor...
print("De 3 en 3 : ")
for i in range(0, 10, 3):
print(i)
print("Et à l'envers ! ")
for i in range(5, -1, -1):
print(i)b) Les boucles while
Les boucles for bouclent toujours un nombre prédéfini de fois : si on décide de boucler sur les entier de 0 à 43, on fera au maximum 43 tours de boucle.
Mais parfois, on a envie de boucler mais on sait pas combien de fois ! C'est le rôle de la boucle while.
On va prendre l'exemple de la suite de syracuse dans cette partie. Elle est définie de la manière suivante :
La conjecture est la suivante : quelque soit
On aimerais réaliser un programme python pour déterminer, pour un for, on est bloqué !
La boucle while, elle, permet de continuer tant qu'une condition est vraie.
On écrit par exemple while un > 1:, suivi d'un bloc de la même façon que pour if et for.
Attention aux boucles infinies !
La boucle while s'arrête uniquement lorsque la condition deviens fausse. Il est donc très important que cela arrive à un moment !
Il faut donc que
- la condition dépende de variables
- ces variables soient modifiés à l'interieur de la boucle, jusqu'à rendre la condition fausse.
Exercice
Complétez le code suivant pour afficher le premier
Loading editor...
#remplacer les ... par le code adapté
n = 0
un = 37
while un > 1:
n ...
if un % 2 == 0: #teste si un est pair
un = ...
else:
un = ...
print(un)
print("Terminé !", n)c) Interrompre une boucle
Cette partie un petit peu annexe viens présenter deux mots-clés relatifs aux boucles : break et continue.
breakpermet de sortir d'une boucle directement, sans attendre la fin normale. Cela fonctionne sur les bouclesforetwhile.Loading editor...
for i in range(10): if i == 5: break print("Tour de boucle numéro ", i)continuepermet de passer directement au tour de boucle suivant, sans executer les lignes suivantes.Loading editor...
for i in range(10): if i % 2 == 0: #si i est pair continue print("Tour de boucle numéro ", i)
III. Les fonctions
Dernière partie dans ce chapitre sur les bases du Python : les fonctions. Nous avons vu que les variables servent (entres autres) à pouvoir stocker une valeur pour la réutiliser plus tard.
Et bien les fonction, c'est un petit peu la même chose avec du code ! Vous avez en fait déjà utilisé des fonctions : print(...) et range(...) en sont.
Leur code est défini une fois quelque part à l'interieur du language Python, et maintenant,
à chaque fois que vous voulez afficher quelque chose, ou bien manipuler une séquence d'entiers, vous pouvez les utiliser. Comme elle sont pré-définies,
on dit que ce sont des fonctions de la librairie standard.
Mais vous pouvez aussi défini vos propres fonctions, pour faire un peu ce que vous voulez !
Loading editor...
def max(a, b): if a > b: return a else: return b
Décortiquons un petit peut ce qu'il se passe dans une fonction. Déjà, on commence toujours par def nom_de_la_fonction(par1, par2, ...):.
nom_de_la_fonctionest à remplacer par ... Le nom de la fonction.- entre les parenthèses, vous pouvez définir autant de paramètres que vous le souhaitez. Les paramètres sont des variables spéciales, qui sont les "entrées" de votre fonction. Vous pouvez les utiliser partout dans le corps de la fonction.
- Après les
:, viens le corps de la fonction. C'est un bloc de code qui sera executé lorsqu'on appelle la fonction. - N'importe où dans la fonction, vous pouvez utilisez
return, seul ou suivi d'une valeur. Lorsque cette ligne s'execute, cela met immédiatement fin à la fonction, et renvoie la valeur spécifié (ou bien ne renvoie rien). On parle de valeur de retour; c'est en quelque sorte la "sortie" ou le "résultat" de la fonction.
Mais voilà : si vous executez le bloc ci-dessus, il ne se passe en apparence rien. En effet, nous avons simplement défini la fonction (d'où le "def"), c'est-à-dire qu'elle est désormais disponible dans notre code.
Vous pouvez en général considérer que tous les morceau de codes d'une page sont "reliés", dans le sens ou les variables et fonctions d'une partie seront disponibles sur les autres.
Bref, maintenant notre fonction définie, on peut l'appeler :
Loading editor...
c = max(12, 85720) print(c)
On a donc écrit le nom de la fonction, suivi de ses arguments : pour chaque paramètre dans la définition de la fonction, on lui fourni une valeur correspondante.
Le maximum entre nos deux arguments est alors renvoyé par la fonction, et on peut le mettre à l'interieur d'une variable (ici c), et afficher cette dernière.
Exercice
Écrivez une fonction avg qui calcule et renvoie la moyenne entre 3 nombres.
Loading editor...
#inserez votre fonction ici m = avg(12, -4, 137.14) print(m)