Skip to main content Informatique en prépa - Lycée Malherbes 

1 - Introduction au language Python

Dans le cours d'ITC, on utilisera le language Python.

image

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 :

  • 13
  • 243
  • le reste de la division euclidienne de 243, 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 :

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"), soit False ("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) et not (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 :

  • A a au moins trois fois l'age de B
  • C est de couleur bleu
  • Parmis A et B, 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 k en k (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 :

u0Nun={un12 si n est pair3un1+1 sinonn1

La conjecture est la suivante : quelque soit u0N, la suite fini par arriver sur 1, et boucle alors sur les valeurs 1,4,2,1.

On aimerais réaliser un programme python pour déterminer, pour un u0 donné, combien d'étape il faut pour arriver à 1. Pour cela, il va falloir répéter des opérations un certain nombre de fois : c'est le travail d'une boucle. Mais avec une boucle 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 n, tel que un=1. Si la page semble planter, c'est que vous avez fait une boucle infinie ! Rechargez-là et recommencez.

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.

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

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)