• Aucun résultat trouvé

Compléments sur Python (EduPython)

N/A
N/A
Protected

Academic year: 2022

Partager "Compléments sur Python (EduPython)"

Copied!
11
0
0

Texte intégral

(1)

Compléments sur

Python (EduPython)

Formation Lycée Juillet 2018

(2)

Pourquoi le choix de Python

Le choix d’un langage textuel, comme Python, au lieu d’un langage par blocs, comme Scratch, permet aux élèves de se confronter à la précision et la rigidité d’une syntaxe proche de celle des expressions

mathématiques, avec l’avantage de pouvoir bénéficier du contrôle apporté par l’analyseur syntaxique.

(Document ressources pour le lycée)

(3)

Bibliothèque « lycee » d’EduPython

Lien vers le fichier Lycee.py

67 fonctions sont définies

Quelques exemples :

Est chargé par la commande from lycee import *

def pgcd(a,b):

Renvoie le Plus Grand Diviseur Commun des 2 nombres

def puissance(a,n):

Cette fonction renvoie le résultat de a^n def reste(a,b):

Cette fonction renvoie le reste de la division de a par b def quotient(a,b):

Cette fonction renvoie le quotient de la division de a par b

(4)

Bibliothèques « math » et

« cmath »

Il suffit d’importer au début de votre programme ce module par l’une des instructions d’importation :

import math : nécessite alors d’appeler la fonction par math.sqrt(2) par exemple pour la racine carrée de 2.

from math import sqrt : permet d’appeler la fonction

directement par sqrt(2) par exemple pour la racine carrée de 2.

from math import * : permet d’importer directement toutes

les fonctions du module math, il n’est alors plus nécessaire de

les précéder de math.

(5)

Quelques fonctions pour les statistiques

Python propose une syntaxe utile pour la

création de liste en

compréhension.

L=[random.randint(1,50) for i in

range(100)]

(6)

Quelques fonctions pour les statistiques

L=[random.randint(1,50) for i in

range(100)]

(7)

Précision de Python !

 Si vous tapez print (3 − 2.99 − 0.01), vous obtiendrez le

résultat −2.13370987545e − 16 ce qui peut poser problème...

 Cela vient de la représentation des nombres dans la machine : la représentation des nombres décimaux se fait selon la

norme IEEE 754 et on obtient la même erreur avec beaucoup de logiciels (Excel, OpenOffice, XCas, ...).

 En fait pour nous le nombre 2,99 est un nombre "simple"

dans son écriture décimale, mais pour un ordinateur qui pense en base 2, c’est beaucoup plus difficile !

 Plus d’information sur la documentation officielle de Python

(8)

A propos de la représentation des nombres dans Python

Donc 0.1 n’est pas 0.1 mais

0.1000000000000000055511151231257827021181583404541 015625

Cela vient du fait du stockage des flottants en binaire.

(9)

Les nombres à virgule flottante sont représentés, au niveau matériel, en fractions de nombres binaires (base 2).

Par exemple, la fraction décimale :

0,125 = 1/10 +1/100+5/1000 Et, de la même manière, la fraction binaire :

0.001=0/2+0/4+0/8

Ces deux fractions ont une valeur identique, la seule différence est que la première est une fraction décimale, la seconde est une fraction binaire.

Malheureusement, la plupart des fractions décimales ne peuvent pas avoir de représentation exacte en fractions binaires. Par conséquent, en général, les nombres à virgule flottante que vous donnez sont seulement

approximés en fractions binaires pour être stockés dans la machine.

Python à 53 décimales binaires ( les 53 bits de mantisse

en flottant-64 bits.)

(10)

 Pour calculer en binaire 1/10, il faut donc faire 1/1010.

 On trouve : N = 0.000 11 00 11 00 11 00….(périodique)

0.1 est donc stocké sous la forme de N « coupé » à 53 décimales

>>> (0.1+0.1==0.2) True

0.1 0.00011001100110011001100110011001100110011001100110011 +0.1 0.00011001100110011001100110011001100110011001100110011 --- 0.2 0.00110011001100110011001100110011001100110011001100110 +0.1 0.00011001100110011001100110011001100110011001100110011 --- 0.3 0.01011001100110011001100110011001100110011001100110011

>>> (0.1+0.1+0.1==0.3) False

Problème d’arrondi

(11)

Problème d’arrondi

Références

Documents relatifs

Si, au cours de l’´ epreuve, vous rep´ erez ce qui vous semble ˆ etre une erreur d’´ enonc´ e, d’une part vous le signalez au surveillant, d’autre part vous le signalez sur

Pour la résolution de système linéaire via la décomposition P LU nous disposons de deux routines dédiées : linalg.lu_factor(A) qui retourne P LU sous forme compacte (une matrice

Le mécanisme de ode.integrate fait que pour avoir une meilleure précision il faut prendre un pas de temps plus petit ( dt=0.05 ) ou encore laisser faire la routine pour le choix du

et sont ind´ ependantes entre

La fonction sqrt n’est pas dans Python mais dans l’objet math. On peut l’appeler

[r]

[r]

[r]