Programmer en Python
1. Les importations de bibliothèques
Les commandes «from math import *» et « from random import * » importent toutes les fonctions (c’est le sens de
*) de ces bibliothèques. Les principales fonctions utilisées en lycée sont :
• De la bibliothèque « math » :sqrt,pi, sin, cos, tan, abs
• De la bibliothèque « random » : randint, random
Console
Remarques :
• En python, les commentaires (lignes non exécutées) commencent par le symbole « # ». Le code est indenté, ce qui
implique en particulier, que tout « copier-coller »de code peut amener à des problèmes de lecture des tabulations.
• Les copies d’écran ont été réalisées à partir du laboratoire Python du site « Le Livre Scolaire » :
[Link]
2. Construire une courbe représentative de fonction
Dans le programme suivant, on importe des bibliothèques et fonctions graphiques que l’on renomme
import [Link] as plt
import numpy as np
# Définition des axes [xmin,xmax,ymin,ymax]
[Link]([-3,3,0,9])
# Création de la grille
[Link]()
# Définition des coordonnées des points avec 100 abscisses allant de -3 à 3
x=[Link](-3,3,100)
y=x**2
# Création des points
[Link](x,y)
# Affichage du graphique
[Link]()
Affichage graphique
3. Utiliser une fonction(au sens de la programmation)
Le programme précédent est modifié pour utiliser une fonction.
def f(x) :
return x**2
4. L’instruction conditionnelle « if elif else »
def je_suis_perdu(x):
# Test "if elif else"
if x==2:
print("x=2")
elif x<3:
print("x<3")
else :
print("je suis perdu")
#Test unique "if"
if x<2:
print("mais que fait donc ce programme?")
print("-----------------------------------")
# Lancement de la fonction avec trois arguments différents
je_suis_perdu(2)
je_suis_perdu(1)
je_suis_perdu(5)
Console
5. La boucle bornée « for »
Dans ce programme, on utilise la « concaténation, c’est-à-dire la somme de caractères !
Etoile="*"
for i in range (10):
print(Etoile)
Etoile=Etoile+"*"
Console →
6. La commande « range » en détails
L = range(1,4)
for nombre in L :
print (nombre)
print("------")
L = range(4)
for nombre in L :
print (nombre)
print("------")
L = range(1,10,2)
for nombre in L :
print (nombre)
7. La boucle non bornée « while »
En général, cette boucle est utilisée pour la recherche d’un rang à partir duquel une condition est réalisée. Pour cela,
il faut utiliser la négation de cette condition dans le test.
# Invitation d'entrée de la précision, ici 0.00001
precision = float(input("entrer la précision"))
print("précision entrée = ",precision)
#Initialisation
u=1
n=0
# Boucle while
while u>precision:
u=0.5*u
n+=1
# On notera dans la ligne précédente la syntaxe utilisée à la place de n=n+1
print ("la plus petite valeur telle que (0,5)^n<=precision est : ",n)
Console →
8. Construire un nuage de points (d’une suite numérique par exemple)
import [Link] as plt
# Définition des axes [xmin,xmax,ymin,ymax]
[Link]([-1,11,-1,110])
# Définition des coordonnées des points du nuage à abscisses entières
x=[n for n in range(11)]
y=[n**2 for n in range(11)]
# Création des points
[Link](x,y)
# Création de la grille
[Link]()
# Affichage du graphique
[Link]()
Affichage graphique →
9. Créer une liste, ajouter et retirer un élément d’une liste, utiliser une liste
from random import randint
# Création de la liste "liste"
liste=[10,20,30,40,50]
# Affichage (attention le premier rang d'une liste est 0 !)
print(liste)
print ("L'élément de rang 2 est ", liste[2])
# Ajout et retrait d'éléments (attention le premier rang d'une liste est 0 !)
[Link]("caramel au beurre salé")
print (liste)
[Link](5)
print (liste)
# Création d'une liste avec la somme cumulée des termes
S=0
liste2=[]
for i in range (len(liste)):
S=S+liste[i]
[Link](S)
print(liste2)
# Création d'une liste de nombres aléatoires 0 et 1 et comptage du nombre de 1
Echantillon=[]
for i in range (10):
alea=randint(0,1)
[Link](alea)
print("Echantillon = ",Echantillon)
Nombre_de_1=0
for j in range(len(Echantillon)):
Nombre_de_1=Nombre_de_1+Echantillon[j]
print("Nombre de 1 dans l'échantillon = ",Nombre_de_1)
Console →
10. Quelques commandes complémentaires (utiles… ou pas !)
Instruction Python Effet
If a !=2 Si « a » est différent de 2
Reste de la division euclidienne de « a »
a%b par »b »
Liste est une liste
[Link](n) Indice de la première apparition de l’élément
de valeur n
[Link]() Duplication de la liste Liste
[Link]() Ordonne une liste dans l’ordre croissant ou
alphabétique
[Link](Liste) Mélange une liste
[Link](n) Compte le nombre d’apparitions de l’élément
de valeur n dans la liste .
[Link](n) Supprime l’élément de valeur n
Console →
11. Quelques programmes :
Calcul des fréquences d’apparition des numéros lors de lancers d’un dé à 6 faces :
import random
N=int(input('Nombre de lancers de dés'))
print( "Le dé a été lancé ", N," fois")
L=[];
for i in range(0,6):
[Link](0)
print('I-------------------I')
for i in range(0,N):
resde=[Link](0,5)
T=int(1+L[resde])
L[resde]=T
for i in range(0,6):
print( ' f(',i+1,')=',float(L[i])/N)
print('I-------------------I')
Console
Approximation de l’aire sous la courbe 𝒄𝒇 : 𝒚 = 𝒙𝟐 sur [0 ;1] par la méthode de Monte-Carlo
import random
import math
import numpy
import [Link] as plt
N=1000
D=0
[Link]('x')
[Link]('y')
for i in range (1,N) :
x=[Link]()
y=[Link]()
if y<=x*x:
D=D+1
[Link](x,y,s=20,c='red')
else:
[Link](x,y,s=20)
I=float(D)/N
print ('Aire=',I)
[Link]('Nuage de points avec Matplotlib')
a = [Link](0,1, .001)
b = a*a
[Link](a,b,'red')
[Link]()
On obtient dans ce cas, pour n=1000, une valeur
1
approchée de 0,294 (pour une valeur exacte de 3).
Pour n= 3000 Pour n=4000
On obtient dans ce cas une valeur approchée On obtient dans ce cas une valeur approchée
de 0.3426666666666667 de 0.33275