Variable et éléments de base
Contenu
3. Variable et éléments de base¶
%matplotlib inline
from IPython.display import HTML,display,IFrame
from IPython.display import YouTubeVideo,Markdown,Video
display(Markdown("**Video du cours: Introduction**"))
YouTubeVideo('UrNZF0fAvIU')
Video du cours: Introduction
Astuce
Pour tester les programmes Python, vous pouvez vous connectez sur un serveur Jupyter, par exemple, pour les étudiants Lyon1 https://jupyter.mecanique.univ-lyon1.fr
3.1. Premier programme Python¶
Utilisation de print pour afficher la valeur d’une expression
print("Surface du disque =", 3.14159*2.2*2.2)
Surface du disque = 15.205295600000001
Vous pouvez tester en ligne les exemples Python en utilisant un serveur jupyter
Vous pouvez aussi utiliser l’interpréteur Python sur votre ordinateur.
bonnes pratiques: privilégier la lissibilité et utiliser des commentaires
# ceci est un commentaire sous python
3.2. Types de base¶
Les 3 principaux types de base sous Python sont:
les nombres entiers
les nombres réels avec un . pour dénoter la virgule
les chaines de caractères, délimités par « ou “
display(Markdown("**Video du cours: type de base en Python**"))
YouTubeVideo('uCPXYS8dc9M')
Video du cours: type de base en Python
Attention
Les vidéos utilisent un ancien interpréteur python 2.7, pour lequel print
est un mot clé,
soit print 'bonjour'
.
Avec Python 3, print
est une fonction et il faut donc utiliser des parenthèses,
soit print('bonjour')
print("ceci est un entier =", 2)
print("mais ceci est un nombre réel =", 2.)
print("et ceci une chaine de caractères =", "deux", 'deux')
ceci est un entier = 2
mais ceci est un nombre réel = 2.0
et ceci une chaine de caractères = deux deux
Notation avec exposant 2.0e11 \(=2\ 10^{11}\)
Les opérations +,-,x,/ sont exactes pour les nombres entiers, mais approchées avec les nombres réels (car non représentables exactement en base 2 !)
print("res=",1. + 2.)
print("res=",0.1 + 0.2)
res= 3.0
res= 0.30000000000000004
Attention l’affichage avec print peut être trompeur!! (repr)
print(repr(1.+2.))
print(repr(.1+.2))
3.0
0.30000000000000004
3.2.1. Syntaxe¶
un programme informatique obéit à une syntaxe rigide
chaque langage informatique à sa propre syntaxe
mais en général les règles de syntaxe sont simples
la programmation n’est pas l’apprentissage de la syntaxe
3.2.2. Erreur de syntaxe¶
en écrivant un programme, on fait souvent des erreurs de syntaxe
en générale elles sont faciles à corriger
exemple
print("valeur =" 1)
File "<ipython-input-8-4fc9e1c50a01>", line 1
print("valeur =" 1)
^
SyntaxError: invalid syntax
Attention en Python, les instructions doivent respectées une mise en page
exemple
print("valeur =",1)
print("valeur =",2)
File "<ipython-input-18-6fdc615a9693>", line 2
print("valeur =",2)
^
IndentationError: unexpected indent
3.2.3. Exercice 1¶
Ecrire un programme Python affichant
1
1 2
1 2 3
3.2.4. Correction¶
# solution
print(1)
print(1,2)
print(1,2,3)
1
1 2
1 2 3
Modifier le programme pour afficher
1
2 1
3 2 1
3.3. Notion de variable¶
une variable est comme une boîte qui sert à stocker une valeur
a = 2
la ligne précédente stocke la valeur 2 dans la variable a
c’est une instruction d’affectation (et non d’égalité)
display(Markdown("**Video du cours: les variables en Python**"))
YouTubeVideo('mNsU270boC0')
Video du cours: les variables en Python
Attention
Les vidéos utilisent un ancien interpréteur python 2.7, pour lequel print
est un mot clé,
soit print 'bonjour'
.
Avec Python 3, print
est une fonction et il faut donc utiliser des parenthèses,
soit print('bonjour')
x = 1
print("x = ",x)
x = x + 1
print("maintenant x = ",x)
x = 1
maintenant x = 2
3.3.1. visualisation de l’exécution¶
utilisation du site : http://pythontutor.com
vous pouvez copier l’exemple de code python sur le site pour l’exécuter
display(Markdown("**Visualisation de l'execution sur le site pythontutor**"))
Video("VIDEO_COURS/pythonlive_var.mp4", embed=True,width=700, height=300)
Visualisation de l'execution sur le site pythontutor
3.3.2. règles d’utilisation des variables¶
le nom des variables est quelconque ( à condition de commencer par une lettre et de ne pas contenir d’espace),
ma_variable = 10.0
print(2*ma_variable)
20.0
Attention: erreur dans le nom d’une variable
exemple
ma variable = 15
1x = 5
File "<ipython-input-14-c3e989711734>", line 1
ma variable = 15
^
SyntaxError: invalid syntax
une variable doit être initialisée avant d’être utilisée,
exemple
z = 10
z = Z + 1
print(z)
NameError Traceback (most recent call last)
<ipython-input-24-7844d14ee663> in <module>
1 z = 10
----> 2 z = Z + 1
3 print(z)
NameError: name 'Z' is not defined
une variable est associée à une adresse mémoire où se trouve effectivement stocké sa valeur, ainsi qu’à un type de données
x = 5.8
print("x=",x," adresse ",id(x)," type ",type(x))
y = 1
print("y=",y," adresse ",id(y)," type ",type(y))
s = "mon 'texte'"
print("s=",s," adresse ",id(s)," type ",type(s))
x= 5.8 adresse 140467777615952 type <class 'float'>
y= 1 adresse 9788960 type <class 'int'>
s= mon 'texte' adresse 140467127206000 type <class 'str'>
Attention type de la variable = type expression
x = 2//3
print(x , type(x))
x = 2./3.
print(x , type(x))
0 <class 'int'>
0.6666666666666666 <class 'float'>
Attention le symbole = représente l’affectation, et non l’égalité mathématique.
\(x=x^2 + 0.25 \ \Longleftrightarrow\ (x-0.5)^2=0 \ \Longleftrightarrow\ x=0.5\)
x = 2.
x = x*x + 0.25
print("x=",x)
x= 4.25
3.3.3. Exercice 2¶
Ecrire un programme Python qui affiche la table de multiplication d’un nombre n
Table de multiplication de n=7
7 14 21 28 35 42 49 56 63 70
3.3.4. Correction exercice¶
n = 12
print("Table de multiplication de ",n)
print(n, 2*n, 3*n, 4*n, 5*n, 6*n, 7*n, 8*n, 9*n, 10*n)
Table de multiplication de 12
12 24 36 48 60 72 84 96 108 120
3.4. Fonctions mathématiques¶
Bibliothèques de fonctions mathématiques:
fonctions puissances: sqrt(x)=\(\sqrt{x}\), power(x,y)=\(x^y\)
fonctions trigonométriques (x angle en radian): sin(x), cos(x), tan(x), asin(y), acos(y), atan(y)
logarithme log(x), log10(x), exp(x)
fonctions hyperboliques: sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x)
constantes mathématiques: pi \(=\pi\) et e \(=exp(1)\)
opérateurs mathématiques: + , - , * , / , //, ** , %
** x**n \( = x^n\) ** élévation à une puissance entière
** p%q = r ** modulo ou reste de la division entière \(p = n q + r\)
** // ** division entière
avec des opérateurs d’affectation: += , -= , *= , /=
2 bibliothéques mathématiques disponible sous python:
math (module de base sous python )
numpy (module optionnel, mais indispensable en calcul scientifique)
utilisation avec import
import numpy as np
display(Markdown("**Video du cours: fonctions mathématiques et liste**"))
YouTubeVideo('uxZtQA606oI')
Video du cours: fonctions mathématiques et liste
Attention
Les vidéos utilisent un ancien interpréteur python 2.7, pour lequel print
est un mot clé,
soit print 'bonjour'
.
Avec Python 3, print
est une fonction et il faut donc utiliser des parenthèses,
soit print('bonjour')
import numpy as np
x = 1.0
print(np.cos(x*np.pi), np.exp(x), np.log(x), np.tanh(x))
-1.0 2.718281828459045 0.0 0.7615941559557649
3.4.1. Exercise 3¶
Ecrire un programme python pour calculer la valeur de la formule mathématique suivante:
# votre programme
3.4.2. Solution¶
attention aux parenthéses !!!
x = 2.0
y1 = np.sqrt(np.log(1+x**2)+np.power(x,np.sin(2*np.pi*x))/np.tanh(2.))
y2 = np.sqrt(np.log(1+x**2)+np.power(x,np.sin(2*np.pi*x)))/np.tanh(2.)
print(x,y1,y2)
2.0 1.6268843330617109 1.6756527556108327
3.5. Les listes¶
**Liste: ** ensemble ordonné d’éléments accessible à partir d’un indice
structure de données plus générale qu’un tableau
les éléments peuvent etre de tous du même type ou de type différent
la taille d’une liste peut varier (structure dynamique) len(L)
on peut enlever, insérer ou ajouter des éléments dans la liste
structure de base sous Python L = [elt1 , elt2, …,eltn ]
ième élément de la liste (indice à partir de 0 ) L[i-1]
liste non modifiable (tuple ou n-uplet) L = (elt1 , elt2, …,eltn )
liste de n entiers à partir de 0 L = range(n )
on peut utiliser des listes pour représenter des vecteurs ou des matrices
ATTENTION c’est en général inéfficace
3.5.1. Exemples¶
L=[1.,2,3,4.]
print(type(L))
print(type(L[0]),type(L[1]))
L.append("cinq")
print(L)
L.insert(1,8.)
print(L)
del L[5]
print(L)
<class 'list'>
<class 'float'> <class 'int'>
[1.0, 2, 3, 4.0, 'cinq']
[1.0, 8.0, 2, 3, 4.0, 'cinq']
[1.0, 8.0, 2, 3, 4.0]
3.6. Les dictionnaires¶
dictionnaire: ensemble de données accessible à partir d’une clé (nom) (au lieu d’un indice)
dict = { 'cle1':val1 , 'cle2':val2, ....}
dict['cle1']
3.6.1. Exemple¶
french = { 'is':'est', 'my':'mon', 'nobody':'personne',
'name':'nom',' your':'ton'}
print("clés du dictionnaire ",french.keys())
L = ['my','name','is','nobody']
print("phrase à traduire: ",L)
print("traduction : ",french[L[0]],french[L[1]],french[L[2]],french[L[3]])
clés du dictionnaire dict_keys(['is', 'my', 'nobody', 'name', ' your'])
phrase à traduire: ['my', 'name', 'is', 'nobody']
traduction : mon nom est personne