Python

Notions de Programmation

Les conditions

Dans une suite d'instructions on est souvent amené à faire des choix. La syntaxe est à peu près la même dans tous les langages :

Si une ou plusieurs conditions sont réalisées alors on réalise ces instructions.

Ou bien :

Si une ou plusieurs conditions sont réalisées alors on réalise ces instructions.

Sinon on réalise ces instructions.

Ou bien encore :

Si une ou plusieurs conditions sont réalisées alors on réalise ces instructions.

Sinon si une ou plusieurs autres conditions sont réalisées alors on réalise ces instructions.

etc...

MéthodeEn Python

En Python la syntaxe d'une instruction conditionnelle est :

1
if condition:
2
    instruction1
3
    instruction2
4
else:
5
    instruction3
6
instruction4
7
     

Le "maître-mot" est : indentation c'est à dire un décalage "spatial" .

Dans le programme ci-dessus, instruction1 et instruction2 ne seront exécutées que si la condition est réalisée, sinon c'est instruction3 qui sera exécutée, tandis que instruction4 sera toujours exécutée.

ExempleUn exemple :

Voici un programme qui demande à l'utilisateur de saisir un nombre et qui renvoie (dans la console) la parité de ce nombre.

1
# import des bibliothèques javax pour l'affichage de boites de dialogues
2
from javax.swing import JOptionPane
3
from javax.swing import JFrame
4
#affichage de la boite de dialogue
5
frame = JFrame()
6
s=eval(JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE))
7
8
if s%2==0:
9
    print("le nombre est pair")
10
else:
11
    print("le nombre est impair")

Remarque : L'instruction s%2==0 compare le reste de la division de s par 2 à 0, les symboles == servent à comparer.

La variable s contient ce que l'utilisateur a saisi.

La méthode eval(...) permet au programme de savoir quel est le type de la saisie, c'est à dire :

Si l'utilisateur saisit 25, s sera de type int, s'il saisi 12.5 s sera de type float.

et s'il saisit un mot ce sera une erreur...

Ce programme fonctionne bien si l'utilisateur saisit un nombre entier.

Et le programme plante si l'utilisateur annule la boite de dialogue ou saisit un mot.

Débogage :

En informatique on passe beaucoup de temps au débogage : ( Éliminer les anomalies de fonctionnement d'un programme)

Réglons le problème du "bouton annuler" de la boite de dialogue :

Il suffit pour cela de n'effectuer le test que si s n'est pas vide

1
# import des bibliothèques javax pour l'affichage de boites de dialogues
2
from javax.swing import JOptionPane
3
from javax.swing import JFrame
4
#affichage de la boite de dialogue
5
frame = JFrame()
6
s=JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE)
7
if s:#si s n'est pas vide
8
    s=eval(s)
9
    if s%2==0:
10
        print("le nombre est pair")
11
    else:
12
        print("le nombre est impair")

Remarque : s=eval(s), s'exécute que si s n'est pas vide

Pour que le programme teste la parité uniquement si la saisie est un nombre entier, il suffit de n'exécuter le test que si la saisie est un nombre entier !

1
# import des bibliothèques javax pour l'affichage de boites de dialogues
2
from javax.swing import JOptionPane
3
from javax.swing import JFrame
4
#affichage de la boite de dialogue
5
frame = JFrame()
6
s=JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE)
7
if s:
8
    s=eval(s)
9
    print(type(s))
10
    if type(s)==int:
11
        if s%2==0:
12
            print("le nombre est pair")
13
        else:
14
            print("le nombre est impair")

Comment gérer la saisie d'un mot ?

Si l'utilisateur saisit un mot, le programme plante car la méthode eval(s) n'est pas utilisable pour un mot

Pour contourner ce problème on utilise la capture d’exception : try ..... except......

1
try:
2
   faire quelque chose
3
except:
4
   faire autre chose si cela ne fonctionne pas

Donc pour notre programme : Si eval(s) ne fonctionne pas on fait afficher "vous n'avez pas saisi un nombre"

1
# import des bibliothèques javax pour l'affichage de boites de dialogues
2
from javax.swing import JOptionPane
3
from javax.swing import JFrame
4
#affichage de la boite de dialogue
5
frame = JFrame()
6
s=JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE)
7
if s:
8
    try:
9
        s=eval(s)
10
    except :
11
        print("vous n'avez pas saisi un nombre")   
12
    print(type(s))
13
    if type(s)==int:
14
        if s%2==0:
15
            print("le nombre est pair")
16
        else:
17
            print("le nombre est impair")

Sauriez-vous faire afficher " vous avez saisi un nombre à virgule " si le cas se présente ?

FondamentalLes instructions de test 

Les tests

  • Tester l'égalité : ==

  • Tester la non-égalité : !=

  • Tester les inégalités : < ; > ; <= ; >=

  • Tester si une variable n'est pas vide : if variable :

  • Tester si deux conditions sont réalisées : if condition1 and condition2 :

  • Tester si l'une ou l'autre de deux conditions sont réalisées : if condition1 or condition2 :

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)