@ccueil Colles

Programmation en Python

Structures algorithmiques de base



Condition et test if

Le traitement d'une condition peut se représenter par l'algorithme
\[\psset{unit=.9cm,linewidth=1.5pt,arrowsize=8pt}
\begin{pspicture}(-.2,-5.1)(5.7,3)
\psline{->}(1,2.8)(1,2)
\pspolygon(0,1)(1,2)(2,1)(1,0)
\rput(1,1){Test ?}
\psline(2,1)(2.5,1)\psline{->}(3.4,1)(4,1)(4,-1)
\pspolygon(2.5,-1)(5.5,-1)(5.5,-2)(2.5,-2)
\rput(4,-1.5){\blue Instructions}
\psline{->}(4,-2)(4,-3)(1,-3)
\psline(1,0)(1,-1.3)\psline{->}(1,-1.75)(1,-5)
\rput(2.9,1){\blue Vrai}
\rput(1,-1.5){\red Faux}
\end{pspicture}\]
La syntaxe en Python d'une instruction conditionnelle est, assez communément,
if test:
   # instructions
Si le test est vrai les instructions situées après if et indentées (c'est-à-dire espacées vers la droite) sont exécutées, pas dans le cas contraire.


Essayer par exemple:
n=float(input("Entrer un nombre: "));
if n<100:
    print("Ce n'est pas bien grand...")

Plus généralement, on peut compléter la structure conditionnelle précédente en indiquant aussi quoi faire si la condition n'est pas vraie, sinon, else en anglais et en python:
\[\psset{unit=.9cm,linewidth=1.5pt,arrowsize=8pt}
\begin{pspicture}(-.6,-5.1)(6.6,3)
\psline{->}(1,2.8)(1,2)
\pspolygon(0,1)(1,2)(2,1)(1,0)
\rput(1,1){Test ?}
\psline(2,1)(2.5,1)\psline{->}(3.4,1)(5,1)(5,-1.5)
\pspolygon(3.5,-1.5)(6.5,-1.5)(6.5,-2.5)(3.5,-2.5)
\rput(5,-2){\blue Instructions}
\psline{->}(5,-2.5)(5,-3.5)(1,-3.5)
\rput(2.9,1){\blue Vrai}
\pspolygon(-.5,-1.5)(2.5,-1.5)(2.5,-2.5)(-.5,-2.5)
\rput(1,-2){\red Instructions}
\rput(1,-.6){\red Faux}
\psline(1,0)(1,-.5)\psline{->}(1,-.8)(1,-1.5)\psline{->}(1,-2.5)(1,-5)
\end{pspicture}\]
La syntaxe en Python devient
if test:
   # instructions
else: 
   # AUtres instructions

Essayer par exemple:
n=float(input("Entrer un nombre: "));
if n<100:
    print("Ce n'est pas bien grand...")
else: 
    print("C'est assez grand...")   
On peut aussi indiquer successivement plusieurs conditions "sinon si" (else if en anglais, contracté en elif en python). En Python, la syntaxe complète est:
if test 1:
   # instructions
elif test 2:
   # instructions
elif test 3:
   # instructions
   …
else: 
   // instructions

Dès qu'un test est vrai, les instructions correspondantes sont effectuées puis on sort de l'ensemble des conditions, même si une condition après un autre elseif est vraie, elle est ignorée: l'ordre importe.
Par exemple:
n=float(input("Entrer un nombre: "));
if n<100:
    print("Ce n'est pas bien grand...")
elif n<1000: 
    print("C'est assez grand...")   
elif n<10000: 
    print("Interessant...")
else:
    print("Beaucoup trop ?...")


Opérateurs logiques

Pour définir un test, on peut utiliser les opérateurs logiques:
  • == : égalité
  • < , >, <= et >= : inférieur ou supérieur, strictement ou non
  • not ou ~ : négation, par exempe x~=4 pour le test x différent de 4, équivalent à ~(x==4)
  • and : "et" logique
  • or : "ou" logique

Par exemple:
n=float(input("Entrer un nombre: "));
if n>100 and n<110:
    print("Grand juste comme il faut")
else:
    print("Raté")


Boucle for

Syntaxe générale

La syntaxe générale d'une boucle for est la suivante, V étant une liste
for i in V:
   # instructions

par exemple
V=[1,2,6,78];
for i in V:
    print(i)
retourne
 1
 2
 6
 78
Toute liste peut être utilisée, numérique ou non:
V=["a","b","cd","efg"];
for i in V:
    print(i)
retourne
 a
 b
 cd
 efg

Boucle sur des entiers: fonction range

Un des cas le plus fréquent en pratique est celui où V=[1,2,3,…,n]: on balaye successivement tous les entiers.
En python, la fonction range créé justement une liste d'entiers. La syntaxe générale est range([start],stop,[step]), les paramètres entre crochets étant optionnels. start, stop et step sont des entiers (integer);   stop n'est pas inclus.
Essayer:
for i in range(5):
    print(i)

print("***")

for i in range(3,7):
    print(i)

print("***")

for i in range(8,16,2):
    print(i)

print("***")

for i in range(21,8,-3):
    print(i)


Boucle conditionnelle while

Le traitement d'une boucle conditionnelle, c'est-à-dire d'une boucle qui s'effectue sous certaines conditions, peut se représenter par l'algorithme
\[\psset{unit=.9cm,linewidth=1.5pt,arrowsize=8pt}
\begin{pspicture}(-.2,-2.2)(5.6,5.6)
\psline{->}(1,5.5)(1,2)
\pspolygon(0,1)(1,2)(2,1)(1,0)
\rput(1,1){Test ?}
\psline(2,1)(2.5,1)\rput[l](2.6,1){\blue Vrai}\psline{->}(3.5,1)(4,1)(4,2.5)
\pspolygon(2.5,2.5)(5.5,2.5)(5.5,3.5)(2.5,3.5)
\psline{->}(4,3.5)(4,4.5)(1,4.5)
\rput(4,3){\blue Instructions}
\rput(1,-.6){\red Faux}
\psline(1,0)(1,-.4)\psline{->}(1,-.85)(1,-2)
\end{pspicture}\]
En Python la syntaxe d'une boucle conditionnelle est:
while test:
   # instructions
Là aussi, tous les opérateurs logiques sont utilisables dans le test.


Essayer:
from random import randint
#importe la fonction randint qui permet de tirer des nombres entiers au hasard
# voir modules et bibliothèques
a=randint(0,10)
b=randint(0,10)
r=int(input(str(a)+"*"+str(b)+"="))

while (r==a*b):
    a=randint(0,10)
    b=randint(0,10)
    r=int(input(str(a)+"*"+str(b)+"="))

print("Perdu, revoir les tables de "+str(a)+" et "+str(b))





Programmation en python