Algorithmique et Programmation 1
Valeurs, opérations et variables (et quelques autres choses)
Licences Informatique et Mathématiques 1ère année
Premier semestre 2015 – 2016
Quelques mots sur Python
I Python est un langage :
I Puissant, souple, très répandu, simple, moderne, élégant, facile à utiliser, à maintenir, adapté à l’enseignement, libre et gratuit, portable,baptisé en référence à Monty Python...
I Pas aussi rapide que certains autres
I Langage interprété:
I Programme traduit vers un langage intermédiaire puis exécuté ligne par ligne
I Deux principaux modes d’exécution : console ou programme
Questions de versions
Attention !
Python 2 6= Python 3
Les deux versions ne sont pas compatibles ! Installez une version 3.x (avec x≥2)
Types de valeurs
I Toutes les valeurs en Python possèdent un type
I Le type détermine les opérationsqu’on peut appliquer
I Les types les plus simples (on en verra d’autres) sont :
I entier (int) : 0 12 -4 123545
I flottant (float) : 3.14 -1.5 12. 4.56e12
I booléen (bool) : True (vrai) ouFalse(faux)
I valeur indéfinie : None
I chaîne de caractères (str pour “string”) : ’bonjour’
Les majuscules/minuscules sont importantes : True6= true
Opérations sur les nombres
I Addition (a+b), soustraction (a− b), multiplication (a∗ b), puissance (a∗∗ b)
I sur deuxintet produisant unint
I ou sur deuxfloatet produisant unfloat
I ou sur unintet unfloatet produisant unfloat
>>> 3 + 4 7
>>> 3.0 + 4 7.0
>>> 3.0 + .4 3.4
>>> 3−4
−1
>>> 3.0−4
−1.0
>>> 3−.4 2.6
>>> 3∗4 12
>>> 3.0∗4 12.0
>>> 3∗.4 1.2
>>> 3∗∗4 81
>>> 3.0∗∗4 81.0
>>> 3∗∗.4 1.551...
Opérations sur les nombres
I Division classique (a/ b) : produit toujours un float
I Division euclidienne :
I Quotient(a//b)
I Reste, oumodulo (a %b)
I Siaetbde typeint, produit un int, sinon unfloat
>>> 3 / 4 0.75
>>> 3.0 / 4 0.75
>>> 3.0 / .4 0.75
>>> 3 // 4 0
>>> 3.0 // 4 0.0
>>> 3 // .4 7.0
>>> 3 % 4 3
>>> 3.0 % 4 3.0
>>> 3 % .4
0.19999...# probleme d’arrondi !
Les opérations suivent les règles de priorité usuelles On peut utiliser des parenthèses : (4 + 2)∗ 1.5
Opérations sur les chaînes de caractères
I Concaténation s +t
>>>’Marne’+’la’+’Vallee’
’MarnelaVallee’
>>>’Marne’+’␣la␣’+’Vallee’
’Marne␣la␣Vallee’
I Répétitions ∗ a
>>>’Hip␣’∗3 +’Hourra␣!’
’Hip␣Hip␣Hip␣Hourra␣!’
>>> (’Hip␣’∗3 +’Hourra␣!␣’)∗2
’Hip␣Hip␣Hip␣Hourra␣!␣Hip␣Hip␣Hip␣Hourra␣!␣’
Beaucoup d’autres opérations (sur les chaînes, les nombres...) On verra ça plus tard
Variables et affectations
I Variable : nomservant à référencer une valeur
I Une variable est remplacée par sa valeur dans les calculs
I Seules les opérations du type de la valeur sont permises
I Affectation: fait de lier une valeur à unevariable
I Syntaxe : nom=expression
x= 3 y=’UPEM’ z=x+ 2
I On peutréaffecterune variable (même une valeur d’un type différent)
x=’UPEM’
Ce n’est pas du toutle = des mathématiques. Il faut le lire comme “prend la valeur”
Variables et affectations
Étapes de l’affectationx = 40 + 2
I Calcul dumembre droit(ici 42) et stockage dans la mémoire
x 42
I Création du nom x (sauf si déjà créé)
x 42
I Création du lien entrevariable et valeur
x 42
Variables et affectations
Étapes de l’affectationy =x + 1
I Calcul dumembre droit après remplacement de chaque variable par la valeur associée (ici x remplacé par 42, résultat : 43)
x 42
43
I Création du nom y (sauf si déjà créé) et du lien entrey et 43
x 42
y 43
Question : Que se passe-t-il quand on exécutex =x + 1 ?
Variables et affectations
En cas deréaffectation, lien précédentperdu : x =−6.5
x
43 -6.5
Si aucun lien vers la valeur précédente, celle-ci est “détruite”
Nommage des variables
Règles de nommage des variables :
I Commencent par unelettre, suivie delettres et de chiffres
I Le caractère underscore“_” est considéré comme une lettre
I Éviter les caractères spéciaux (accents, cédille, etc.)
I Les mots réservés (ou mots-clés) de Python sont interdits
I Il y a aussi des conventions (vues plus tard)
Exemples : _ex2 Ex2mpl1
Contre-exemple : 2014mlv
Mots-clés et autres mots réservés
Les mots suivants sontréservéspour le langage :
and as assert 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 True False None
Au passage :
I Tout ce qui se trouve après un caractère#est uncommentaire
I Mettre des commentaires dans le code est un bon moyen de pouvoir le reprendre facilement
Lecture et affichage
Pour interagir avec l’utilisateur, deuxfonctions pré-définies
I Fonction de saisie : x =input()
I L’utilisateur tape une ligne au clavier
I La ligne est stockée sous forme de chaîne de caractères (str)
I Cette valeur peut ensuite être affectée à une variable (icix)
I On peut aussi afficher un message pour l’utilisateur : x=input(’votre␣prenom␣:␣’)
I Fonction d’affichage : print(x)
I Affiche dans le terminal la chaîne de caractères associée àx
I On peut afficher plusieurs valeurs d’un coup : print(x,y,z, ...)
Problème : et si l’on veut saisir un entier ? Afficher un entier ?
Conversions / transformations de type
On a parfois besoin de convertir une valeur d’un type à l’autre :
I Une valeur en chaîne de caractères avec la fonctionstr
I Un exemple d’affichage : print(5) est équivalent àprint(str(5))
I Un exemple de concaténation : "J’ai␣"+str(10) +’␣ans.’
I Un float, etparfois unstrenint
I Possible : int(3.5) int(’14’)
I Impossible : int(’3.5’) int(’deux’)
I Un int, et parfoisun strenfloat
I Possible : float(3) float(’14.2’)
I Impossible : float(’3,5’) float(’bonjour’)