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éthode : En Python
En Python la syntaxe d'une instruction conditionnelle est :
if condition:
instruction1
instruction2
else:
instruction3
instruction4
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.
Exemple : Un exemple :
Voici un programme qui demande à l'utilisateur de saisir un nombre et qui renvoie (dans la console) la parité de ce nombre.
# import des bibliothèques javax pour l'affichage de boites de dialogues
from javax.swing import JOptionPane
from javax.swing import JFrame
#affichage de la boite de dialogue
frame = JFrame()
s=eval(JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE))
if s%2==0:
print("le nombre est pair")
else:
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
# import des bibliothèques javax pour l'affichage de boites de dialogues
from javax.swing import JOptionPane
from javax.swing import JFrame
#affichage de la boite de dialogue
frame = JFrame()
s=JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE)
if s:#si s n'est pas vide
s=eval(s)
if s%2==0:
print("le nombre est pair")
else:
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 !
# import des bibliothèques javax pour l'affichage de boites de dialogues
from javax.swing import JOptionPane
from javax.swing import JFrame
#affichage de la boite de dialogue
frame = JFrame()
s=JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE)
if s:
s=eval(s)
print(type(s))
if type(s)==int:
if s%2==0:
print("le nombre est pair")
else:
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......
try:
faire quelque chose
except:
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"
# import des bibliothèques javax pour l'affichage de boites de dialogues
from javax.swing import JOptionPane
from javax.swing import JFrame
#affichage de la boite de dialogue
frame = JFrame()
s=JOptionPane.showInputDialog(frame,"Entrez un nombre entier","Dialog",JOptionPane.PLAIN_MESSAGE)
if s:
try:
s=eval(s)
except :
print("vous n'avez pas saisi un nombre")
print(type(s))
if type(s)==int:
if s%2==0:
print("le nombre est pair")
else:
print("le nombre est impair")
Sauriez-vous faire afficher " vous avez saisi un nombre à virgule " si le cas se présente ?
Fondamental : Les 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 :