Introduction à Python



Documents pareils
Présentation du langage et premières fonctions

STAGE IREM 0- Premiers pas en Python

TP 1. Prise en main du langage Python

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Initiation à la programmation en Python

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Découverte de Python

INF 321 : mémento de la syntaxe de Java

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Algorithmique et Programmation, IMA

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Aide - mémoire gnuplot 4.0

2 Comment fonctionne un ordinateur, dans les grandes lignes

Les bases du langage Python

Calcul Formel et Numérique, Partie I

Chapitre 2 Devine mon nombre!

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

TD3: tableaux avancées, première classe et chaînes

Programmer en JAVA. par Tama

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Introduction à MATLAB R

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions


L informatique en BCPST

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

1. Structure d'un programme FORTRAN 95

Cours 7 : Utilisation de modules sous python

Licence Sciences et Technologies Examen janvier 2010

DM 1 : Montre Autoquartz ETA

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Bases de programmation. Cours 5. Structurer les données

Python - introduction à la programmation et calcul scientifique

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Introduction au langage C

V- Manipulations de nombres en binaire

Programmation en Java IUT GEII (MC-II1) 1

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Représentation d un entier en base b

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Les classes en Python

Calcul Formel et Numérique, Partie I

Claude Delannoy. 3 e édition C++

Nathalie Barbary SANSTABOO. Excel expert. Fonctions, simulations, Groupe Eyrolles, 2011, ISBN :

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

as Architecture des Systèmes d Information

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Cours d algorithmique pour la classe de 2nde

I. Introduction aux fonctions : les fonctions standards

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Plan du cours. Historique du langage Nouveautés de Java 7

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Logiciel. Table de matières I Environnement requis...2

Cours 1 : La compilation

Utilisation d objets : String et ArrayList

Notes introductives à Matlab

Langage Java. Classe de première SI

Maple: premiers calculs et premières applications

Notions fondamentales du langage C# Version 1.0

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Rappels Entrées -Sorties

Programmation Web. Madalina Croitoru IUT Montpellier

Quelques commandes de base en SCILAB

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Conventions d écriture et outils de mise au point

1 Recherche en table par balayage

SUPPORT DE COURS. Langage C

Cours d Algorithmique et de Langage C v 3.0

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Informatique Générale

Configurer la supervision pour une base MS SQL Server Viadéis Services

Logiciel de Base. I. Représentation des nombres

Petit Guide de Survie en Scilab

Algorithmique et programmation : les bases (VBA) Corrigé

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

UE C avancé cours 1: introduction et révisions


Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Projet de programmation (IK3) : TP n 1 Correction

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Analyse de sécurité de logiciels système par typage statique

Initiation à l algorithmique

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Une introduction à Java

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

Recherche dans un tableau

Java Licence Professionnelle CISII,

Initiation. àl algorithmique et à la programmation. en C

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Chapitre VI- La validation de la composition.

Création d objet imbriqué sous PowerShell.

Transcription:

Introduction à Python Marc de Falco Maths/Info en MPSI Centre International de Valbonne 7 mai 2013

A propos de cette présentation Cette présentation reprend le poly co-écrit avec Laurent Chéno et Judicaël Courant. Dans la mesure du possible, le code présenté est compatible avec Python 2.X et Python 3.Y. Syntaxe de Python sur la partie au programme Un point sur les erreurs classiques

Présentation de Python Python est un langage interprété faiblement typé à l exécution orienté objet très généraliste et disposant de nombreuses bibliothèques assez répandu open source The Zen of Python : import this

Première manipulation avec l interprète Python dispose de deux modes d évaluation : Un mode interactif se comportant comme une calculatrice >>> 6 * 7 42 Un mode exécution de script, qui exécute un programme depuis un fichier. Ici nous utiliserons le premier mode.

Les entiers Les opérations standards sur les entiers sont définies : + - * // % ** (addition, soustraction, multiplication, quotient, reste, exponentiation). précision arbitraire >>> 2 ** 128 340282366920938463463374607431768211456 >>> 37 // 3 12 >>> 37 % 3 1

Les flottants Les opérations sur les flottants sont + - * / ** >>> 3.2 + 1.1 4.3 >>> 2.0 ** 0.5 1.4142135623730951 précision, en général, 64-bits. les nombres sont flottants (au programme de l IPT) >>> 0.1 + 0.1 + 0.1-0.3 5.551115123125783e-17 >>> format(0.1, 1.55 ) # 55 decimales 0.100000000000000005551115123125 7827021181583404541015625

Opérations mixtes entier flottant flottant >>> 2 ** 600-0.1 4.149515568880993e+180 la division simple / entre entiers En Python 2 : quotient >>> 1 / 2 0 En Python 3 : division flottante >>> 1 / 2 0.5

Fonctions mathématiques Les fonctions mathématiques sont dans le module math Deux possibilités d accès : Import du module et accès depuis le module >>> import math >>> math.sqrt(2.0) 1.4142135623730951 Import spécifique de la fonction et accès direct >>> from math import sqrt >>> sqrt(2.0) 1.4142135623730951

Fonctions mathématiques Listing des fonctions et constantes : >>> import math >>> dir(math) [ doc, file, name, package, acos, acosh, asin, asinh, atan, atan2, atanh, ceil, copysign, cos, cosh, degrees, e, erf, erfc, exp, expm1, fabs, factorial, floor, fmod, frexp, fsum, gamma, hypot, isfinite, isinf, isnan, ldexp, lgamma, log, log10, log1p, modf pi, pow, radians, sin, sinh, sqrt, tan, tanh trunc ] Il y a de l introspection sur les modules.

Aide embarquée Un doute sur une fonction? >>> help(math.ceil) Help on built-in function ceil in module math: ceil(...) ceil(x) Return the ceiling of x as an int. This is the smallest integral value >= x. On peut même le faire directement sur le module pour avoir toute l aide : >>> help(math) Ce n est pas réservé aux modules/fonctions fournis.

Variables Les variables ne se déclarent pas. Définition à la première affectation : >>> x = 42 >>> x 42 >>> y Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name y is not defined Opérations d incrémentation : >>> x = x + 1 >>> x += 1 # plus Pythonesque Possible avec tous les autres opérateurs binaires.

Booléens Deux valeurs True et False opérateurs logiques and or not >>> False or not (True and False) True Relations de comparaisons ==!= < > <= >= >>> 1 == (3-2) True >>> 1 > 2 ** 0.5 False

Les chaînes de caractères Entre guillemets simples ou doubles. Pas de distinction caractère/chaîne Opérations : concaténation +, longueur len(s), i-ème caractère s[i] Immuables >>> Bonjour Bonjour >>> "Luminy" "Luminy" >>> s = Bonjour >>> s + Luminy Bonjour Luminy >>> len(s) 7 >>> s[0] B >>> s[0] = A [...] str object does not support item assignment

Types et conversions Pour récupérer le type : >>> type(2) <class int > >>> type(3.2) <class float > Ces valeurs sont manipulables : >>> type(2) == type(3.2) False >>> t = type( a ) >>> t <class str > Pour convertir une valeur dans un autre type : >>> str(3.14) 3.14 >>> int( 42 ) 42

Print l instruction print est un grand changement de Python 3. Sauf cas particulier, en écrivant : >>> print( Essai ) Essai cela marche dans les deux Python Il y a une conversion automatique des arguments en str.

Les tuples Pratiques pour regrouper des données Hétérogènes Accès aléatoire Déconstruction Concaténation Immuables >>> (True, 42) (True, 42) >>> t = (1, 2, 3) >>> t[0] 1 >>> x, y = 2, 3 >>> x, y = y, x >>> x 3 >>> (1, 2) + (3, 4) (1, 2, 3, 4)

Les listes Définies comme les tuples mais avec des [ ] Hétérogènes Accès aléatoire, en arrière Modifiable >>> l = [1,True,3] # heterogen >>> l[0] = 42 >>> l [42, True, 3] >>> len(l) 3 >>> l + [4, 5] [42, True, 3, 4, 5] >>> l[-1] 3 >>> l[-2] True

Les listes en tant qu objets Une liste est un objet. Opérations de manipulation : méthodes. >>> l.append(4) >>> l [42, True, 3, 4] >>> l.pop() 4 >>> l [42, True, 3] Comme pour les modules : >>> dir(l) # renvoie la liste des methodes et attributs >>> help(l.append) # la documentation d une methode

Les cauchemards commencent : Références implicites Les listes, commes les autres valeurs qui ne sont pas des types de bases, sont manipulées par référence. Version int >>> x = 3 >>> y = x >>> x += 1 >>> x 4 >>> y 3 Version liste >>> x = [3] >>> y = x >>> x.append(1) >>> x [3,1] >>> y [3,1] Les deux variables pointent vers la même liste. Pour copier y = copy.copy(x) après un import copy

Les slices (1/2) Les slices permettent d accèder à des sous listes par copie! >>> l = [0,1,2,3,4,5,6,7,8,9] >>> l[3:5] # l[debut:fin exclue] [3, 4] >>> l[:5] # debut = 0 [0, 1, 2, 3, 4] >>> l[7:] # fin = len(l) [7, 8, 9] >>> l[:] # toute la liste, mais c est une copie!!! [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l[0:8:2] # pas [0, 2, 4, 6] >>> l[::-1] # pas negatif il inverse debut/fin [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Les slices (2/2) On peut s en servir pour faire des affectations >>> l = [0,1,2,3,4,5,6,7,8,9] >>> l[3:5] = l[7:9] >>> l [0, 1, 2, 7, 8, 5, 6, 7, 8, 9] # Tour de magie Pythonesque, que se passe t il? >>> l = [0,1,2,3,4,5,6,7,8,9] >>> l[::2], l[1::2] = l[1::2], l[::2] >>> l # a ne surement pas montrer aux eleves ;-) De l intêret des slices : c est la brique de base de numpy/scipy.

La minute complexité Les listes Python n en sont pas. Ce sont des tableaux dynamiques. Accès (lecture/écriture) : O(1) Ajout, Suppression à la fin : O(1) amorti Insertion, Suppression ailleurs : O(n)

Instruction conditionnelle (1/2) if <ma condition>: <bloc d instructions si verifiee> else: <bloc d instructions sinon> Le point clé ici c est l identation du bloc. C est elle qui le délimite. Le else est optionnel. x = 3 if x % 2 == 1: x += 1 x *= 2 # sur le meme niveau d indentation x -= 1 # niveau en dessous donc en dehors du if

Instruction conditionnelle (1/2) Tests imbriqués : if x == 1: x += 1 else: if x == 2: x -= 1 else: x *= 2 qui peut s écrire : if x == 1: x += 1 elif x == 2: x -= 1 else: x *= 2 Oui, l indentation peut déclencher des syntax error...

Blocs et portée Des erreurs classiques : Pas de scope pour les blocs. Une variable peut-être définie conditionnellement if x < 0: y = -x print(y) Erreur à l exécution si x >= 0.

Expression conditionnelle { n/2 si n pair x = 3n + 1 sinon Version instruction if n % 2 == 0: x = n // 2 else: x = 3 * n + 1 Version expression : x = n//2 if n % 2 == 0 else 3*n+1 asymétrique car correspond à un x = mavaleur if pasderreur else rattrapage

Boucle conditionnelle while <ma condition>: <bloc d instructions a executer> Exemple n = 1 f = 1 while n < 5: f *= n n += 1

Boucle inconditionnelle for <variable> in <iterable>: <bloc d instructions a executer> Qu est-ce qu un itérable? Liste, tuple, chaîne : s = 0 for e in [1,2,3]: s += e for c in abc : print(c)

Range Pour faire une simple boucle allant de debut à fin par incrément de step, on utilise l itérable range(debut,fin,step). En Python 2 c est une liste, en Python 3 il faut la convertir. >>> list(range(1,10,1) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1,10,2) [1, 3, 5, 7, 9] >>> list(range(5)) # debut = 0, step = 1 [0, 1, 2, 3, 4] Avantage d un itérable non liste? >>> range(0,100000000000000000000000000000,5)[50] 250

Gestion du flot de contrôle break, continue for i in range(5): if 2 * i == 2 + i: print(i) break attention, la variable du for n existe plus après Avec les erreurs liées à la portée des blocs... for i in range(1,5): if i % 10 == 0: v = i / 10 break print(v)

Fonctions Syntaxe : def mafonction(arg1,..., argn): < corps de la fonction > Pour renvoyer une valeur : return 42. Exemple : def somme(l): s = 0 for e in l: # le reste de la liste s += e return s (on peut aussi faire sum(l)... ) Pour appeler une fonction mafonction(v1,..., vn).

Fonctions et portée (1/3) Les fonctions définissent un scope. def f(x): y = x + 2 return y y # n est pas defini ici C est le comportement usuel.

Fonctions et portée (2/3) Pas de clôtures : >>> x = 3 >>> def f(y):... return x + y... >>> f(3) 6 >>> x = 4 >>> f(3) 7

Fonctions et portée (3/3) Les variables globales sont : accessibles en lecture inaccessibles en assignation si non déclarées par défaut une assignation déclare la variable locale dans TOUT le bloc (rétroactif) x = 3 def f(): return x + 1 print(f()) # affiche 4 def g(): x = 5 return x + 1 print(g()) # affiche 6 print(x) # affiche 3 def h(): global x x = 5 return x + 1 print(h()) # affiche 6 print(x) # affiche 5

Next? Ici, nous n avons couvert que la partie au programme Dans la suite logique : les dictionnaires (tables de hachage) les structures de données fournies dans la bibliothèque standard import collections (des vraies listes!) les objets (c est le cœur de Python) les itérateurs...