Coder en Python : les bases


Les entrées et les sorties

Entrée : la fonction input

Pour saisir les valeurs d’une variable au clavier on utilise la fonction input. Elle déclenche l’ouverture d’une boîte de dialogue dans laquelle on peut saisir la valeur souhaitée.

In [ ]:
nom_utilisateur = input("Veuillez saisir votre nom :")
age_utilisateur = input("Veuillez saisir votre âge :")
print(nom_utilisateur, age_utilisateur)
print(type(age_utilisateur)) # OBSERVEZ BIEN LE TYPE

ATTENTION : Par défaut, en Python, les variables saisies au clavier et récupérées par la fonction input sont des chaînes de caractères.

Ce n'est pas forcément très pratique surtout si les valeurs saisies représentent plutôt des nombres. Et cela peut créer des erreurs :

In [ ]:
age_utilisateur = input("Veuillez saisir votre âge :")
age_utilisateur = age_utilisateur + 2

L'erreur se situe ligne 2 comme l'indique la flèche verte. Le message d'erreur TypeError: can only concatenate str (not "int") to str indique que Python ne peut concaténer une chaîne de caractères qu'avec une autre chaîne de caractères (mais pas avec un entier).

En effet, la variable age_utilisateur étant de type str, le symbole + qui suit est le symbole de concaténation, qui ne peut pas s'appliquer à l'entier 2 qui suit car celui-ci est de type int.

RÈGLE D'USAGE IMPORTANTE : pour éviter ces problèmes, il est un très bon usage que de déclarer le type de variable que l'utilisateur doit saisir. Pour cela, il suffit de préciser le type de variable avant la fonction input comme indiqué ci-dessous :

  • pour saisir un entier : nom_variable = int(input("message à afficher"))
  • pour saisir un flottant : nom_variable = float(input("message à afficher"))
  • pour saisir un booléen : nom_variable = bool(input("message à afficher"))
  • pour saisir un entier long : nom_variable = long(input("message à afficher"))

Ainsi, pour régler le problème précédent, il suffit d'écrire :

In [ ]:
age_utilisateur = int(input("Veuillez saisir votre âge :"))
print("Dans deux ans, vous aurez :", age_utilisateur + 2, "ans")

Sortie : la fonction print

Vous l'avez déjà utilisée à maintes reprises : la fonction print permet d'afficher des éléments dans la console, notamment les valeurs de variables ou encore des messages.

Remarque importante : dans un Notebook, tout comme dans une console, si on veut afficher la valeur d'une variable, il n'est pas nécessaire d'utiliser la fonction print. Il suffit pour cela de taper en dernière ligne le nom de la variable que l'on veut afficher.

In [ ]:
prix = 35
prix_remise = prix * 0.8 # remise de 20 %
prix # ne sera pas affiché
prix_remise # sera affiché car en dernière ligne

Si vous souhaitez afficher les valeurs de plusieurs variables, un print est nécessaire.

In [ ]:
prix = 35
prix_remise = prix * 0.8 # remise de 20 %
print(prix, prix_remise) # un print pour afficher plusieurs variables

Exercice 0 :

Ecrivez un programme Python qui demande à l'utilisateur de saisir un prix et qui affiche le prix soldé à -30%. Vous peaufinerez les affichages d'entrée et de sortie.

Variables et affectations

Dans le langage Python, le symbole = correspondant à l'affectation (écrite $\leftarrow$ en pseudo-code).

Exercice 1 :

Codez en Python, les algorithmes correspondant aux exercices 1 à 3 du document intitulé Les bases de l'algorithmique de la Séquence 1. Ces algorithmes ont été rappelés ci-après. Vous vérifierez ainsi vos réponses en affichant convenablement les valeurs de variables demandées.

Vous ajouterez trois cellules de codes, chacune correspondant à un exercice.

Exercice 1 : Que valent N et P après l’exécution de cet algorithme ?

N ← 2
P ← 3
N ← P + 1
P ← N

Exercice 2 : Que vaut B après l’exécution de cet algorithme ?

A ← 8
B ← (A ≥ 10)

Exercice 3 : Supposons que N vaut 2 ; que vaut P après l’exécution de cet algorithme ?

P ← N mod 5
P ← N div P

Instructions conditionnelles : if elif et else

En Python, les instructions conditionnelles se codent en utilisant les instructions if, elif, else.

if condition1 :
    instructions 1 à effectuer
elif condition2 :
    instructions 2 à effectuer
else :
    instructions 3 à effectuer

Remarques :

  • ne pas oublier les deux points à la fin des lignes avec if, elif et else qui permettent d'ouvrir le bloc d'instructions à effectuer dans chaque cas ;
  • les instructions à effectuer sont indentées d'une tabulation par rapport aux if, elif et else : c'est la syntaxe Python, elle doit absolument être respectée ;
  • les mot-clés elif et else ne sont pas obligatoires ;
  • au contraire du pseudo-code, on n'écrit pas en Python de 'fin si' car celui-ci est matérialisé la fin des indentations.
In [ ]:
a = 15 # VALEUR A MODIFIER POUR VISUALISER LE RÔLE D'UNE INDENTATION
if a >= 10:
    print("Vous avez la moyenne") # indentation  = dans le bloc d'instructions du if
    print("Message dans le bloc d'instructions du if") # indentation = toujours dans le bloc d'instructions du if
print("Message en dehors du bloc d'instruction du if") # indentation terminée = on est sorti du bloc d'instructions du if

Le dernier message s'affiche à chaque fois, en revanche les deux messages précédents ne s'affichent que si on entre dans le bloc if, autrement dit si la condition a >= 10 est vraie. Modifiez la valeur de a à la première ligne pour observer cela si ce n'est pas encore fait.

Exercice 2 :

Programmez en Python l'algorithme de l'exercice 5 du document intitulé Les bases de l'algorithmique de la Séquence 1 et dont on rappelle l'énoncé ci-dessous.

Exercice 5 : Supposons que A vaut 1 au début ; que vaut-il après l’exécution de cet algorithme ?

si A ≥ 0
   alors A ← A - 1
   sinon A ← A + 1
fin si

Exercice 3 :

Proposez un programme Python qui :

  • demande à l'utilisateur d'entre le score d'une équipe A puis celui d'une équipe B ;
  • qui affiche un message indiquant quelle équipe est déclarée vainqueur ou s'il y a match nul.

Répétitives énumérées : boucles for

En Python, les boucles 'Pour' se codent en utilisant l'instruction for :

for element in sequence :
    instruction 1
    instruction 2
    ...
    instruction N

Remarques :

  • element est une variable créée par le for, ce n'est pas à vous de l'instancier. Elle prend successicement chacune des valeurs figurant dans la sequence parcourue ;
  • ne pas oublier les deux points à la fin de la ligne avec for qui permettent d'ouvrir le bloc d'instructions à exécuter (à répéter) ;
  • les instructions à effectuer sont indentées d'une tabulation par rapport au for ;
  • au contraire du pseudo-code, on n'écrit pas en Python de 'fin pour' car celui-ci est matérialisé la fin des indentations.

La fonction range pour créer des séquences de nombres

La fonction range permet de créer des séquences de nombres. Vous allez comprendre quels nombres sur les exemples qui suivent :

  • range(5) : permet de créer la séquence de nombres entiers de 0 inclus à 5 exclu : c'est-à-dire les nombres 0, 1, 2, 3, 4.
  • range(2,8) : permet de créer la séquence de nombres entiers de 2 inclus à 8 exclu : c'est-à-dire les nombres 2, 3, 4, 5, 6, 7.
  • range(2,8,3) : permet de créer la séquence de nombres entiers de 2 inclus à 8 exclu, par pas de 3 : c'est-à-dire les nombres 2, 5.

Ainsi, pour répéter un bloc d'instructions 36 fois, il suffit d'écrire :

for i in range(36):
    instructions

En effet : la variable i créée par la boucle va prendre successivement les valeurs : 0, 1, 2, 3, ..., 35. Elle prend donc 36 valeurs et le bloc instructions sera donc répété 36 fois.

On aurait aussi pu écrire cela :

for i in range(0, 36):
    instructions

ou encore :

for i in range(1,37):
    instructions

ou encore :

for valeur in range(36):
    instructions

car dans chaque cas, la variable créée (i ou valeur) parcoure 36 valeurs différentes.

Exercice 4 :

Programmez en Python les algorithmes des exercices 9, 10 et 12 du document intitulé Les bases de l'algorithmique de la Séquence 1 et dont on rappelle les énoncés ci-dessous.

Exercice 9 : Supposons que A vaut initialement 10 ; combien vaut-il après l’exécution de cet algorithme ?

pour i de 2 à 5 faire
    A ← A + i
fin pour

Exercice 10 : Supposons que V vaut 0 initialement ; combien vaut-il après l’exécution de cet algorithme ?

pour I de 1 à 4 par pas de 1 faire 
   si I est pair 
      alors V ← V + I*I 
   fin si
fin pour

Indication : un nombre est pair s'il est divisible par 2, autrement dit si le reste dans la division entière par 2 vaut 0.

Exercice 12 : Supposons que A vaut 1 initialement ; combien vaut-il après l’exécution de cet algorithme ?

pour i de 0 à 3 faire 
    pour j de 0 à 2 faire
        A ← A + i*j    
    fin pour
fin pour

Amélioration : pour visualiser l'imbrication des deux boucles for, affichez aux bons endroits les différentes valeurs des couples (i,j) et de la variable A.

Parcourir des chaînes de caractères

Nous venons de voir que la fonction range permettait de créer des séquences de nombres que l'on pouvait parcourir avec l'instruction for.

Il se trouve que les chaînes de caractères sont également des séquences ... de caractères. On peut donc aussi les parcourir très simplement avec une boucle for.

In [ ]:
chaine = "Bonjour les élèves !"
for caractere in chaine :
    print(caractere)

La variable caractere créée par le for prend successivement les valeurs de la séquence "Bonjour les élèves !", c'est-à-dire qu'elle prend la valeur 'B' puis la valeur 'o', puis la valeur 'n', etc. La boucle s'arrête lorsque toute la séquence a été parcourue.

Vous reviendrez à ce paragraphe pour la recherche du dernier exercice de ce document.

Répétitives conditionnées : boucles while

En Python, les boucles 'Tant que' se codent en utilisant l'instruction while :

while condition :
    instruction 1
    instruction 2
    ...
    instruction N

Remarques :

  • condition est une variable booléenne qui est soit vraie (True) soit fausse (False) ;
  • Tant que condition vaut True les instructions du bloc sont répétées ;
  • On passe à la suite du programme dès que condition vaut False, autrement dit si condition reste vraie tout le temps, la boucle while boucle à l'infini, ce qui pourra causer des problèmes plus ou moins importants ;
  • ne pas oublier les deux points à la fin de la ligne avec while qui permettent d'ouvrir le bloc d'instructions à exécuter (à répéter) ;
  • les instructions à effectuer sont indentées d'une tabulation par rapport au while ;
  • au contraire du pseudo-code, on n'écrit pas en Python de 'fin tant que' car celui-ci est matérialisé la fin des indentations.

Exercice 5 :

Programmez en Python les algorithmes des exercices 13 et 15 du document intitulé Les bases de l'algorithmique de la Séquence 1 et dont on rappelle les énoncés ci-dessous.

Exercice 13 : Supposons que D vaut 7 initialement ; que vaut-il après l’exécution de cet algorithme ?

tant que D > 3 faire 
   D ← D - 3 
fin tant que

Exercice 15 : Proposez un algorithme qui utilise une boucle Tant que qui a pour but d’afficher le quotient de la division entière d’un entier naturel A par un entier naturel B.

Les fonctions

En Python, on définit une fonction à l'aide du mot-clé def :

def nom_de_la_fonction(parametre1, parametre2, ..., parametreN):
    instruction1
    instruction2
    ...
    return(valeur1, valeur2, ..., valeurP)
  • le mot-clé def est suivi du nom de la fonction ;
  • les paramètres (ou arguments) de la fonction sont ensuite écrits entre parenthèses et séparés par des virgules ;
  • il existe des fonctions sans paramètre, les parenthèses sont néanmoins obligatoires et restent vides ;
  • le mot-clé return permet de renvoyer une ou plusieurs valeurs (à séparer par des virgules) ;
  • au premier return rencontré l'exécution de la fonction est stoppé : si on veut renvoyer plusieurs valeurs on ne peut pas utiliser plusieurs return ; il faut séparer les valeurs à renvoyer par des virgules ;
  • comme d'habitude ne pas oublier les deux points à la fin de la ligne avec def qui permettent d'ouvrir le bloc d'instructions à exécuter (à répéter).

Exercice 6

Programmez en Python les fonctions des exercices 16, 17 et 18 du document intitulé Les bases de l'algorithmique de la Séquence 1 et dont on rappelle les énoncés ci-dessous.

Exercice 16 : Proposez le pseudo-code d’une fonction mini qui renvoie le minimum des deux nombres donnés en paramètres.

Exercice 17 : Proposez le pseudo-code d’une fonction mini4 qui renvoie le minimum des 4 nombres donnés en paramètres. Contrainte : vous devez faire appel à la fonction mini !

Exercice 18 : Les élèves d’une classe ont eu 4 notes. Le professeur, très généreux, décide de retirer la note la plus basse avant de calculer la moyenne de chaque élève. Proposez le pseudo code d’une fonction nouvelleMoyenne qui prend les 4 notes en paramètres et qui renvoie la moyenne calculée après avoir retiré la moins bonne.

Exercices bilan

Exercice 7 :

Transformez votre programme de l'exercice 0 de ce document en une fonction qui prend en paramètres le prix et le taux de réduction et qui renvoie le prix soldé.

Exercice 8 :

  1. Ecrivez le pseudo-code d'une fonction qui prend en paramètre un entier naturel n et qui renvoie True si cet entier naturel est premier et False sinon. On rappelle qu'un entier naturel est premier s'il possède exactement deux diviseurs distincts : 1 et lui-même.*
  2. Programmez ensuite cette fonction en Python.

Exercice 9 :

  1. Proposez d'abord un algorithme en pseudo-code qui permet de parcourir tous les caractères d'une chaîne de caractères et qui affiche le nombre d'occurences de la lettre 'a' (c'est-à-dire le nombre de fois où le caractère 'a' apparaît dans la chaîne de caractères.
  2. Programmez ensuite cet algorithme dans le langage Python.
  3. Proposez ensuite le pseudo-code d'une fonction qui prend une chaine de caractères chaine et un caractère c en paramètres et qui renvoie le nombre d'occurences de c dans chaine.
  4. Programmez ensuite cette fonction en Python.

Germain BECKER & Sébastien POINT, Lycée Mounier, ANGERS Licence Creative Commons