Syntaxe du langage Python

Telechargé par gdoura mohamed
Syntaxe du langage Python (boucles,
tests, fonctions)
Les trois concepts des algorithmes
Tests
o Définition et syntaxe
o Comparaisons possibles
o Opérateurs logiques
o Ecriture condensée
o Exemple
o None, True et 1
o Passer, instruction pass
Boucles
o Boucle while
o Boucle for
o Listes, boucle for, liste en extension
o Itérateurs
o Plusieurs variables de boucles
o Ecriture condensée
o Pilotage d’une boucle : continue
o Pilotage d’une boucle : break
o Fin normale d’une boucle : else
o Suppression ou ajout d’éléments lors d’une boucle
Fonctions
o Définition, syntaxe
o Exemple
o Paramètres avec des valeurs par défaut
o Ordre des paramètres
o Surcharge de fonction
o Commentaires
o Paramètres modifiables
o Fonction récursive
o Portée des variables, des paramètres
o Portée des fonctions
o Nombre de paramètres variable
o Ecriture simplifiée pour des fonctions simples : lambda
o Fonctions générateur
o Identificateur appelable
o Compilation dynamique (eval)
o Compilation dynamique (compile, exec)
Indentation
Fonctions usuelles
Constructions classiques
Avec les variables, les boucles et les fonctions, on connaît suffisamment d’éléments
pour écrire des programmes. Le plus difficile n’est pas forcément de les comprendre
mais plutôt d’arriver à découper un algorithme complexe en utilisant ces briques
élémentaires. C’est l’objectif des chapitres centrés autour des exercices. Toutefois,
même si ce chapitre présente les composants élémentaires du langage, l’aisance qu’on
peut acquérir en programmation vient à la fois de la connaissance du langage mais
aussi de la connaissance d’algorithmes standards comme celui du tri ou d’une
recherche dichotomique. C’est cette connaissance tout autant que la maîtrise d’un
langage de programmation qui constitue l’expérience en programmation.
Les trois concepts des algorithmes
Les algorithmes sont composés d’instructions, ce sont des opérations élémentaires que
le processeur exécute selon trois schémas :
la
séquence
enchaînement des instructions les unes à la suite des autres : passage d’une
instruction à la suivante
le saut
passage d’une instruction à une autre qui n’est pas forcément la suivante
(c’est une rupture de séquence)
le test
choix entre deux instructions
Le saut n’apparaît plus de manière explicite dans les langages évolués car il est une
source fréquente d’erreurs. Il intervient dorénavant de manière implicite au travers des
boucles qui combinent un saut et un test. On écrit toujours ceci avec les langages les
plus récents :
initialisation de la variable moy à 0
faire pour i allant de 1 à N
moy reçoit moy + ni
moy reçoit moy / N
Et ceci est traduit par :
ligne 1 : initialisation de la variable moy à 0
ligne 2 : initialisation de la variable i à 1
ligne 3 : moy reçoit moy + ni
ligne 4 : i reçoit i + 1
ligne 5 : si i est inférieur ou égal à N alors aller à la ligne 3
ligne 6 : moy reçoit moy / N
Tout programme peut se résumer à ces trois concepts. Chaque langage les met en
place avec sa propre syntaxe et parfois quelques nuances mais il est souvent facile de
les reconnaître même dans des langages inconnus. Le calcul d’une somme décrit plus
haut et écrit en python correspond à l’exemple suivant :
<<<
t = [0, 1, 2, 3, 4]
N = 5
moy = 0
for i in range(1, N + 1): # de 1 à N+1 exclu --> de 1 à N inclus
moy += t[i - 1] # le premier indice est 0 et non 1
moy /= N
print(moy)
>>>
2.0
Le premier élément de cette syntaxe est constituée de ses mots-clés for et in et des
symboles =, +=, /=, [, ], (, ), :. La fonction iskeyword permet de savoir si un mot-clé
donné fait partie du langage python. Même si les modules seront décrits plus tard, la
syntaxe suivante reste accessible :
<<<
import keyword
print(keyword.iskeyword("for")) # affiche True
print(keyword.iskeyword("until")) # affiche False
>>>
True
False
Le programme suivant permet de récupérer la liste des mots-clés du langage :
<<<
import keyword
print("\n".join(keyword.kwlist))
>>>
False
None
True
and
as
assert
async
await
break
class
continue
def
del
elif
else
except
finally
for
from
global
if
import
in
is
lambda
nonlocal
not
or
pass
raise
return
try
while
with
yield
A cela s’ajoutent les symboles :
+ - * ** / // %
< > == <= >= !=
<< >> & | \ ~ ^
= += -= *= /= //= %= **=
|= &= <<= >>= ~= ^=
( ) [ ] { }
" """ ' '''
, : .
#
@ @=
Les espaces entre les mots-clés et les symboles ont peu d’importance, il peut n’y en
avoir aucun comme dix. Les espaces servent à séparer un mot-clé, un nombre d’une
variable. Les mots-clés et les symboles définissent la grammaire du langage python.
Toutes ces règles sont décrites dans un langage un peu particuilier par la page Full
Grammar specification.
Les fonctions builtin ne font pas partie de la grammaire du langage même si elles sont
directement accessibles comme la fonction abs qui retourne la valeur absolue d’un
nombre. C’est un choix d’implémentation du programme qui interprète le langage
mais absent de la grammaire.
Tests
Définition et syntaxe
Définition D1 : test
Les tests permettent d’exécuter des instructions différentes selon la valeur d’une
condition logique.
Syntaxe :
Syntaxe S1 : Tests
if condition1 :
instruction1
instruction2
...
else :
instruction3
instruction4
...
La clause else est facultative. Lorsque la condition condition1 est fausse et qu’il
n’y a aucune instruction à exécuter dans ce cas, la clause else est inutile. La syntaxe
du test devient :
if condition1 :
instruction1
instruction2
...
S’il est nécessaire d’enchaîner plusieurs tests d’affilée, il est possible de condenser
l’écriture avec le mot-clé elif :
if condition1 :
instruction1
instruction2
...
elif condition2 :
instruction3
instruction4
...
elif condition3 :
instruction5
instruction6
...
else :
instruction7
instruction8
...
Le décalage des instructions par rapport aux lignes contenant les mots-clés if, elif,
else est très important : il fait partie de la syntaxe du langage et s’appelle
l”indentation. Celle-ci permet de grouper les instructions ensemble. Le programme
suivant est syntaxiquement correct même si le résultat n’est pas celui désiré.
<<<
x = 1
if x > 0:
signe = 1
print("le nombre est positif")
else:
signe = -1
print("le nombre est négatif") # ligne mal indentée (au sens de
l'algorithme)
print("signe = ", signe)
>>>
le nombre est positif
le nombre est négatif
signe = 1
Une ligne est mal indentée : print("le nombre est négatif"). Elle ne devrait être
exécutée que si la condition x>0 n’est pas vérifiée. Le fait qu’elle soit alignée avec les
1 / 45 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !