- dim. 17 janvier 2016
- INPROS
- #ipython jupyter
Ipython notebook : cours INPROS ¶
Auteur: Marc BUFFAT, Pr dpt de Mécanique, UCB Lyon 1
Contributeurs: Violaine Louvet, Michel Kern, Loic Gouarin, Laurence Viry </h5>
Mise à disposition selon les termes de la Licence Creative Commons
Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 2.0 France.
%matplotlib inline
%autosave 300
from IPython.display import HTML,display
css_file = 'style.css'
try:
display(HTML(open(css_file, "r").read()))
print("using ",css_file)
except :
print("using default css")
Premier programme Python¶
Utilisation de print pour afficher la valeur d’une expression
print("Surface du disque =", 3.14159*2.2*2.2)
Vous pouvez tester en ligne les exemples Python en utilisant la cellule SageCell
cellule SageCell du cours InPros
Vous pouvez aussi utiliser l’interpréteur Python sur votre ordinateur, par exemple l’interpréteur ipython (http://ipython.org)
bonnes pratiques: privilégier la lissibilité et utiliser des commentaires
# ceci est un commentaire sous python
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 ‘
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')
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)
Attention l’affichage avec print peut être trompeur!! (repr)
print(repr(1.+2.))
print(repr(.1+.2))
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
Erreur de syntaxe¶
en écrivant un programme, on fait souvent des erreurs de syntaxe
en générale elles sont faciles à corriger
print("valeur =" 1)
Attention en Python, les instructions doivent respectées une mise en page.
print("valeur =",1)
print("valeur =",2)
Exercice 1¶
Ecrire un programme Python affichant
1
1 2
1 2 3
print(1)
print(1,2)
print(1,2,3)
Modifier le programme pour afficher
1
2 1
3 2 1
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é)
x = 1
print("x = ",x)
x = x + 1
print("maintenant x = ",x)
HTML('<iframe width="800" height="300" frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=x%3D1%0Ax%3Dx%2B1%0Ay%3D1.0%0As%3D%22un%22&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=2&curInstr=0&codeDivWidth=350&codeDivHeight=400"> </iframe>')
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)
Attention: erreur dans le nom d’une variable
ma variable = 15
1x = 5
- une variable doit être initialisée avant d’être utilisée,
z = 10
z = Z + 1
print(z)
- 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))
- Attention type de la variable = type expression
x = 2//3
print(x , type(x))
x = 2./3.
print(x , type(x))
- 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)
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
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)
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
import numpy as np
x = 1.0
print(np.cos(x*np.pi), np.exp(x), np.log(x), np.tanh(x))
Exercise 3¶
Ecrire un programme python pour calculer la valeur de la formule mathématique suivante:
$$ y = \sqrt{\log(1+x^2)+\frac{x^{\sin(2\pi*x)}}{\tanh(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)
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
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)
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']
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]])