Introduction au langage Python

Programmes python

Un programme est une traduction d’un algorithme dans un langage qu'un ordinateur est capable d'interpréter.

Le premier algorithme a été écrit en 1842 par Ada Lovelace ; un langage de programmation conçu entre 1977 et 1983 a d'ailleurs été baptisé en son hommage : le langage Ada.

Ada LovelaceAda Lovelace

Un programme python est l'écriture d'une séquence de commandes dans le langage python, enregistrée dans un fichier d'extention .py appelé script. Chaque IDE propose des solutions pour lancer l'exécution d'un script. En ligne de commande, il suffit de donner le nom du script au programme python :

$ python script.py

Les commandes de ce fichier seront interprétées comme si on les entrait une à une à la main, mais aucun résultat ne sera affiché dans la console.

Par exemple, une opération en console affichera son résultat :

>>> 2+3
5

Mais la même opération dans un programme n'affichera rien. Par exemple, l'exécution dans basthon donne :

script.py

2+3

Exécution :

>>> # script executed
>>>  
  • Un calcul (comme 2+3), seul, n'a pas de sens dans un script. Son résultat, en mémoire, serait immédiatement perdu puisque non affecté à une variable.
  • Un script s'exécute indépendament de la console, qui ne sert que d'interface de contrôle. Pour afficher quelque chose sur la console, il faut donc explicitement le demander, avec la fonction print

script.py

somme = 2+3
print('La somme vaut :', somme)

Exécution :

>>> # script executed
La somme vaut : 5
>>>

Exercice Recopier (dans l'éditeur de basthon) puis compléter le script ci-dessous à gauche, pour qu'il produise l'affichage proposé à droite. (L'affichage doit s'adapter aux modifications éventuelles des valeurs entrées en ligne 1 du script.)

script.py

x, y = 7, 9
...

Exécution :

>>> # script executed
Le produit de 7 par de 9 vaut : 63
>>>
x, y = 7, 9
produit = x * y
print('Le produit de', x, 'par', y, 'vaut :', produit)

Interactions par la console

La fonction print permet d'afficher un texte en console.

Elle permet donc la sortie de donnée (chaine de caractères) sous forme d'une information lisible par l'utilisateur.

La fonction input permet d'attendre l'entrée par l'utilisateur d'une information textuelle dans la console.

Exemple :

nom = input('Quel est ton nom ? ')
print('Bonjour',nom,'!')
Exercice Tester l'exemple ci-dessus, puis le modifier pour qu'il
  • demande l'âge de l'utilisateur
  • et lui dise quel âge il aura dans 10 ans.

La difficulté vient de ce qu'une entrée utilisateur, attendue par la fonction input ne peut être que textuelle :

>>> test = input('Entrée : ')
Entrée : 7
>>> test
'7'

Pour obtenir un entier, par exemple, il faut donc enssuite manipuler cette chaîne de caractères, (comme vu en 2.) :

>>> test_int = int(test)
>>> test_int
7

On peut donc proposer une solution :

nom = input('Quel est ton nom ? ')
print('Bonjour',nom,'!')
age = input('Quel est ton âge ? ')  # Éviter les accents pour les variables
age = int(age)  # Passage de str vers int
age_futur = age + 10
print('Dans 10 ans, tu en auras',age_futur,'!')

Fonctions

Le langage python contient déjà un certain nombre de fonctions natives (built-in) prédéfinies pour son fonctionnement. On peut en trouver une liste en suivant ce lien. Par exemple, on a déjà utilisé les fonctions len, int, str,chr, ord...

Une fonction est une portion de code, dont les entrées sont des variables appellées paramètres et renvoyant en fin d'exécution une valeur de sortie.
def ma_fonction(parametre1, parametre2):
    """ Description (Ici : renvoie la somme des valeurs des paramètres) """
    resultat = parametre1 + parametre2  # Traitement (ici la somme)
    return resultat
  • Le mot-clef def permet de définir une fonction. Il doit être suivi du nom de la fonction, de parenthèses contenant les noms de ses paramètres, et se terminer par :.
  • Le code de la fonction doit être indenté par 4 espaces (PEP 8).
  • Les premières lignes devraient toujours contenir de la documentation entre triples guillemets.
  • La dernière ligne devrait toujours indiquer la valeur à renvoyer après le mot-clef return.

Une fois ce script exécuté, la fonction est en mémoire. Pour l'utiliser il suffit de l'appeler, par son nom en proposant des valeurs d'entrée pour ses paramètres alors appelées arguments (ci-dessous 4 et 5) :

>>> ma_fonction(4,5)
9
Exercice On souhaite utiliser le script ci-dessous :
nombre = input('Donne un nombre à 2 chiffres : ')
print('À l\'envers, cela donne :', verlan(nombre))
  1. Écrire la fonction verlan prenant une chaine de deux caractères en entrée et renvoyant une chaine constituée de ces deux caractères, mais dans l'ordre inverse.
  2. Vérifier le bon fonctionnement de l'ensemble
Il faut penser à positionner la fonction avant son appel, car l'interpréteur lit le script dans l'ordre des lignes. On ne peut donc pas utiliser une fonction non encore définie.
def verlan(chaine):
    """ chaine est une chaine de 2 caractères.
    La fonction renvoie une chaine de caractères avec
    ces mêmes caractères, dans l'ordre inverse. """
    return chaine[1]+chaine[0]
    
nombre = input('Donne un nombre à 2 chiffres : ')
print('À l\'envers, cela donne :', verlan(nombre))
Exercice Écrire la fonction caesar qui décale une lettre majuscule d’un nombre de places donné dans l’alphabet (en considérant qu’après 'Z' , on retrouve 'A' ).
>>> caesar('X',4)
'B'
On rappelle que les lettres majuscules ont un code ASCCI compris entre 65 et 90, et que python dispose de fonctions natives pour passer d'une lettre à son code et inversement :
>>> ord('A')
65
>>> chr(90)
'Z'
On rappelle également l'existence de l'opérateur "modulo" : % donnant le reste dans une division euclidienne :
>>> 13%3
1
Par exemple :
def caesar(lettre, decale):
    """ lettre est une chaine de 1 caractère et decale un entier.
    La fonction renvoie une chaine de 1 caractère définie par
    décalcage de lettre d'autant de rang dans l'alphabet que decale. """
    position = ord(lettre)-65 # Position entre 0 et 25 dans l'alphabet
    nouvelle_position = (position+decale) % 26
    return chr(65+nouvelle_position)
    
print(caesar('X',4)) # Doit afficher B

Pour s'entraîner

Comme avec la fonction print il n'est pas toujours indispensable de renvoyer une valeur de sortie si l'action de la fonction est d'envoyer directement sa donnée à un périférique de sortie (écran, imprimante, communication radio, ...). L'exercice suivant demande de dessinner des figures à l'écran. Le travail est donc plus centré sur l'utilisation correcte des paramètres.

Exercice Fonctions avec "turtle" explorées en classe de SNT : f0b1-2461019.

Définir une fonction pemet de mettre en mémoire un morceau de code et donc de répéter son exécution dans des situations semblables sans avoir à le recopier à chaque fois, mais juste en ajustant ses paramètres. C'est la même idée que celle qui permet de simuler le mouvement à partir d'images chaque fois un peu différentes...

Exercice Fonctions avec "pixel" explorées en classe de première NSI : 5cc5-3024597.

Navigation