Découverte de Python



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

STAGE IREM 0- Premiers pas en Python

Initiation à la programmation en Python

TP 1. Prise en main du langage Python

Algorithmique et Programmation, IMA


1 Recherche en table par balayage

Cours d algorithmique pour la classe de 2nde

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

Corrigé des TD 1 à 5

Cours 7 : Utilisation de modules sous python

Chapitre 2 Devine mon nombre!

L informatique en BCPST

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 AU LANGAGE C SUR PIC DE MICROSHIP

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

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

I. Introduction aux fonctions : les fonctions standards

Algorithmique et programmation : les bases (VBA) Corrigé

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Initiation à la Programmation en Logique avec SISCtus Prolog

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

Maple: premiers calculs et premières applications

Utilisation d objets : String et ArrayList

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

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

2 Comment fonctionne un ordinateur, dans les grandes lignes

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

Python - introduction à la programmation et calcul scientifique

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

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Algorithmes récursifs

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

EXCEL TUTORIEL 2012/2013

Algorithme. Table des matières

Représentation d un entier en base b

Cours d Algorithmique et de Langage C v 3.0

Les chaînes de caractères

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Calcul Formel et Numérique, Partie I

Solutions du chapitre 4

Excel 2007 Niveau 3 Page 1

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

Initiation à LabView : Les exemples d applications :

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

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

Architecture des Systèmes d Information Architecture des Systèmes d Information

I00 Éléments d architecture

Recherche dans un tableau

INF 321 : mémento de la syntaxe de Java

Conventions d écriture et outils de mise au point

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

MO-Call pour les Ordinateurs. Guide de l utilisateur

Notions fondamentales du langage C# Version 1.0

Sélection du contrôleur

Licence Sciences et Technologies Examen janvier 2010

Algorithmique avec Algobox

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Introduction à MATLAB R

Image d un intervalle par une fonction continue

Continuité et dérivabilité d une fonction

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Rappels sur les suites - Algorithme

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

Initiation à l algorithmique

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

Programmer en JAVA. par Tama

Premiers pas avec Mathematica

Manuel de mise en page de l intérieur de votre ouvrage

Tp 1 correction. Structures de données (IF2)

Calcul Formel et Numérique, Partie I

Chapitre 4 Pierre, papier, ciseaux

Chap III : Les tableaux

Introduction à l informatique en BCPST

Traitement de texte : Quelques rappels de quelques notions de base

Les structures de données. Rajae El Ouazzani

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Langage Java. Classe de première SI

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation en Caml pour Débutants

Débuter avec Excel. Excel

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

V- Manipulations de nombres en binaire

Mon aide mémoire traitement de texte (Microsoft Word)

Vous allez le voir au cours de ce premier chapitre, 1. Découvrir l ipad

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Le langage C. Séance n 4

Initiation à Excel. Frédéric Gava (MCF)

ACTIVITÉ DE PROGRAMMATION

TP1 : Initiation à l algorithmique (1 séance)

Transcription:

Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en première année. 1. Téléchargement et installation de Python Python est un langage libre, et il existe de nombreux environnements de développement. JE vous propose d utiliser Pyzo, que vous pouvez télécharger à l adresse http://www.pyzo.org/ Une fois installé, quand vous lancez Pyzo, vous avez une fenêtre qui ressemble à : La fenêtre du haut est la console, dans laquelle on tape les instructions et s éxécutent les programmes. On peut redémarrer la console (shell-restart) ce qui efface de la mémoire tout ce qui a été exécuté. Dans les onglets se tapent les programmes. A droite il y a un explorateur du disque et un résumé des variables et des fonctions. Quelques liens qui peuvent être utiles pour ce travail Le site officiel de Python avec la documentation (en anglais) : https://www.python.org/doc/ Le site du zero : http://fr.openclassrooms.com/informatique/python/cours Sur mon site perso, http://jgaltier.free.fr/terminale_s/isn/annee.htm Mon adresse électronique pour ceux qui ont des difficultés ou voudraient une validation des exercices : jean.galtier@ac-aix-marseille.fr

Pour ceux qui n ont jamais fait de programmation 1. Variables numériques. Tapez dans la console les instructions suivantes, et observez : a = 2 b = 5 print(a + b) print(a-b) c = 2*a + 3*b print(c) b = 7 print(b) print(b**2) a = a+1 print(a) print( a+b =,a+b) Variables : Quand vous écrivez l instruction a = 2, vous créez une variable, la nommez a (si elle n existe pas encore) et mettez dedans la valeur 2. Il faut imaginer une variable comme une ardoise sur laquelle on peut écrire des choses. Évidemment, chaque fois qu on veut écrire une nouvelle chose, il faut effacer l ancienne. Dans l instruction c = 2*a + 3*b, l ordinateur crée la variable c, effectue le calcul 2*a + 3*b (si c est possible) et met le résultat dans la variable c. Le nom d une variable n est pas limité à une seule lettre, on peut utiliser des lettres et des chiffres, ainsi que le caractère _. Il doit toujours commencer par une lettre. Que représente l opération **? Dans l instruction print( a+b =,a+b), il y a d abord l affichage d un texte (entre apostrophes, on peut aussi le mettre entre guillemets), puis l affichage de la valeur du calcul de a + b. 2. Chaines de caractères. Tapez les instructions mot = Bonjour nom = Monsieur print(mot+nom) print(2*mot) print(mot [0]) print(len(mot)) Comment faire pour qu il y ait un espace entre Bonjour et Monsieur? Que se serait-il passé si on avait tapé print( mot + nom )? Que signifie l instruction + dans le cas des chaines de caractère? Et le produit par un entier? Comment avoir la troisième lettre de la variable nom? Que signifie l instruction len?

Mettez votre nom dans la variable nom, puis faites dire bonjour à l ordinateur. 3. Types de variables Tapez maintenant les instructions suivantes : type(24) type(a) type(2.3254) type( a ) type( 24 ) type( Bonjour ) type(mot) print(a>b) type(a>b) a= Au revoir type(a) Le type d une variable, c est la nature de ce qu elle contient. Il y a les types simples : entier (int), réel(float), booléen (bool), et les types complexes. Les chaines de caractères sont de type str (pour string), il y a aussi les listes (on met les éléments entre crochets a=[1,2,3, soleil ] est une liste à 4 éléments), les tuples (on met les éléments entre parenthèses, a=(1,2,3,4) est un tuple. La différence est qu on ne peut pas modifier les éléments d un tuple. 4. Un premier programme Écrire un programme, c est écrire à l avance plusieurs instructions, qui seront exécutées plus tard par l ordinateur. Pour écrire un programme, on commence par ouvrir une un onglet. On écrit le programme dans cette nouvelle fenêtre, puis on fait un clic droit sur le haut de l onglet pour l éxecuter dans la console Le programme demande à l utilisateur son nom, puis dit bonjour : nom=input( Quel est votre nom? ) print( Bonjour +nom) La deuxième ligne est déjà vue. La première crée la variable nom, fait afficher la question Quel est votre nom?, attend qu une réponse soit saisie au clavier pour l entrer dans la variable nom. Imaginons que nous voulions en plus calculer et afficher l âge de l utilisateur en lui demandant son année de naissance. Il faudrait alors écrire les lignes suivantes : nom=input( Quel est votre nom? ) annee=input( En quelle année êtes-vous né?) print( Bonjour +nom) age=2014-annee print( Vous avez,age, ans ) Malheureusement, ce programme ne fonctionne pas, car annee est une chaine de caractères, ce que vous pouvez vérifier en tapant type(annee). Il faut la transformer en nombre, ce qu on peut faire avec la fonction int ou la fonction eval. Et remplacer la ligne age=2014-annee par age=2014-int(annee) ou age=2014-eval(annee)

Les types de variables de Python Chaque fois, je ferai une comparaison avec les règles employées par Mapple. Les instructions Mapple se terminent par un point-virgule, les instructions Python par un passage à la ligne. Il est fondamental en Python d écrire les lignes les unes en dessous des autres. En règle générale, l affectation d une valeur à une variable se fait en Mapple par := et en Python par =. a) Variables numériques La déclaration Mapple est mavariable := 2 ; La déclaration Python est mavariable = 2 (sans le ; mais il faut aller à la ligne) On peut déclarer plusieurs variables d un coup x,y,z = 3,4,5 Opérations et fonctions : L exposant se note **, la division entière // et le reste dans la division entière % La plupart des fonctions réelles ne font pas partie du module de base, pour y avoir accès il faut taper from math import *, ce qui importe le module math. Dans ce module, vous aurez les constantes pi et e, ainsi que les fonctions usuelles (sqrt pour la racine carrée) b) Chaînes de caractères Mapple les écrit entre guillemets, Python laisse le choix, apostrophes ou guillements ou apostrophes triples. Les trois écritures sont correctes, si la chaîne contient des apostrophes on l écrira entre guilemets, si elle comporte des guillemets on l écrira entre apostrophes, et si elle comporte les deux on l écrira entre guillemets triples (toujours avec = et sans le point virgule final. Le type d une chaîne de caractères est str (pour string) Ainsi sont correctes les trois lignes suivantes : ma_chaine = Il fait beau ce soir ma_chaine = Il fait beau ce soir ma_chaine = Il fait beau ce soir Opérations et fonctions : Len donne la longueur, on accède aux caractères individuels de la chaîne a par a[n] où n est l indice, attention la numérotation commence à 0. a[-1] donne le dernier élément, a[-2] l avant dernier, etc. La concaténation est notée + Le produit d une chaîne par un entier répète la chaîne autant de fois que l entier (l ordre est indifférent, on peut aussi bien faire 2*a que a*2) c) Booléens True et False en Python (attention à la majuscule) Opérations : not, and (abréviation &), or (abréviation ^), et pour le ou exclusif d) Listes Python connait deux sortes de listes : le type tuple, noté entre parenthèses, avec ses éléments séparés par des virgules, et le type list, noté entre crochets, avec ses éléments séparés par des virgules aussi. La numérotation dans une liste commence à l indice 0, que ce soit un tuple ou une liste. Dans les deux cas, on

accède au terme d indice en tapant a[k]. La différence fondamentale entre les deux types est que les tuples ne sont pas mutables ainsi : A=[0, 1, 2, 3] (les espaces sont facultatifs mais aèrent) A[0]=5 A devient [5, 1, 2, 3] Tandis que B=(0, 1, 2, 3) B[0]=5 produit un message d erreur On peut transformer une liste en tuple et réciproquement : Si A est une liste, tuple(a) forme le tuple composé des mêmes éléments que A, et de même si b est un tuple, list(b) forme la liste Opérations : la concaténation (de deux listes ou de deux tuples) est notée +, le produit par un entier fait comme pour les chaines de caractères. On peut ajouter un élément à la fin d une liste avec la méthode append : si A est la liste A=[5, 4, 3, 2], A.append(1) transforme A en [5, 4, 3, 2, 1] Comme pour les chaines de caractères, len donne la longueur d une liste ou d un tuple. e) Supprimer une variable L instruction del x détruit la variable x (en fait, supprime le nom x de l espace de noms, et l association entre x et son contenu, mais elle ne supprime pas le contenu de la mémoire. Il existe dans Python un algorithme ramasse miettes, qui supprime de la mémoire les contenus vers lesquels plus aucun nom ne pointe.

Les outils de base de la programmation 1. Entrées, sorties Quand on veut que l utilisateur saisisse une valeur au clavier, on emploie l instruction a = input( texte au choix ) où a est la variable où sera enregistrée la saisie. Attention, le type est toujours une chaine de caractères. Si on veut une variable numérique, il faut taper a = eval(input( texte )), où la fonction eval demande à Python de donner s il en est capable une valeur numérique au texte entré, par exemple eval( 3+7 ) donnera 10. Les sorties se font en général par print(mavariable). C est ici que je parle aussi des commentaires : il est extrêmement important de comenter ce que l on fait, parce que, quand on revient plus tard sur son travail, on a parfois oublié pourquoi on avait fait ceci ou cela. Les commentaires se font en commençant par #, ce qui suit le # jusqu à la fin de la ligne n est pas interprété par le langage. 2. Tests En Mapple la syntaxe est If condition then instructions (else instructions ) fi ; En Python, pas de then ni de fi ni de point virgule, tout se fait avec l indentation if condition : Instruction 1 Instruction 2 else : Instruction 1 Instruction 2. Suite du programme Tant qu on est dans le if (ou dans le else), on est à gauche (d une tabulation ou de 4 espaces, tout dépend du paramétrage) La fin du if est repérée par le retour en dessous du if. Attention : if sans majuscule, et les : sont obligatoires Remarque : l égalité conditionnelle est notée ==, et la différence est notée!= 3. Boucles while C est la même chose En Mapple on écrit while condition do instructions od ; En Python c est l indentation qui fait le travail while condition : Instruction 1 Instruction 2 Instruction 3 Retour au programme De nouveau, while avec un w minuscule 4. Boucles for L instruction for en Python est for k in a : où a est une structure itérable (soit une chaîne de caractères, une liste ou un tuple). Mais alors, comment faire pour écrire la bête instruction Mapple for k from 1 to 100 do?

La réponse est dans la fonction range, qui produit une suite d entiers : range(100) est la suite 0,1,2 99 (il y a 100 termes commençant à 0) range(1,101) est la suite 1,2,3,100 (donc de 1 inclus à 101 exclu) range(1,23,4) est la lsuite 1,5,9,13,17,21 (on va de 4 en 4 sans dépasser 23) Ainsi, on peut écrire for k in bonjour : print(k) Qui va afficher les lettres du mot bonjour de haut en bas ou for k in range(10) : print(7*k) qui va afficher la table de multiplication par 7 5. Fonctions, procédures La syntaxe Python def mafonction(x, y, z) : instruction 1 instruction 2 return a, b, c De nouveau il faut faire attention à l indentation x, y, z sont les paramètres de la fonction, ils peuvent avoir n importe quel type, et a, b, c sont les images, ils peuvent avoir n importe quel type, mais (a, b, c) est un tuple. Il y a des fonctions sans paramètres, comme par exemple random() qui retourne un réel pseudo aléatoire entre 0 et 1 Python ne fait pas de différence entre fonction et procédure, une procédure est simplement une fonction qui ne retourne rien (elle se contente de faire quelque chose, mais on ne peut pas accéder au résultat) comme par exemple print(). 6. Bibliothèques Il existe des quantités de bibliothèques dans Python, certaines sont livrées en standard, d autres sont livrées avec Pyzo, d autres encore doivent être téléchargées et installées. Les principales bibliothèques sont math pour les fonctions mathématiques, random pour tout ce qui est tirages aléatoires, numpy est la principale bibliothèque de calcul scientifique, matplotlib servira pour les graphiques scientifiques, Tkinter est une interface graphique de base et pygame une autre plus complète. Pour importer une bibliothèque, il y a plusieurs manières : import math importe toutes la bibliothèque math. Pour avoir une idée de son contenu, on peut, après l avoir importée, taper help(math). Pour utiliser un élément de la bibliothèque, on doit préciser math. avant son nom, par exemple la racine carrée sera math.sqrt, et le nombre pi sera math.pi Si on ne veut pas avoir à taper math à chaque fois, on doit importer la biblithèque en écrivant from math import *. Dans ce cas, les noms seront directement sqrt, pi LE danger est que si on importe plusieurs bibliothèques, on pourra avoir des conflits de nom. Une dernière manière d importer est (par exemple) import random as rnd. Dans ce cas, au lieu de taper à chaque fois random, on tape rnd, ce qui est plus court.

Enfin, on peut décider d importer seulement la fonction dont on a besoin, par exemple from math import exp n importera que l exponentielle (et on n aura pas besoin de taper le préfixe math, on tapera exp(a).

Chaines de caratères, listes, tuples 1. Comment les déclarer a) En extension : Ma_chaine = Bonjour Mon_tuple = (2,5, a, Bonjour,2.758E-4,[5,7]) Ma_liste = [3,5,(1,2),[2,5,8]] Un tuple ou une liste peuvent contenir des éléments de type différents, et même des variables, mais l affectation est définitive. X=5 Ma_liste2 = [1,2,X] print (Ma_liste2) [1,2,5] X=8 print(ma_liste2) [1,2,5] b) Par concaténation Ma_chaine = Ma_chaine+ Madame Print (Ma_chaine) Bonjour Madame Mon_tuple = Mon_tuple+(13,) #on met la virgule pour faire comprendre au programme que (13,) est un tuple d un élément c) Par une boucle, en partant d un objet vide que l on remplit Ma_liste3=[] For k in range(100) : Ma_liste3=Ma_liste3+[2*k+1] print(ma_liste3) 2. Ce qui est commun aux trois types L instruction pour avoir la longueur : len(x) où x est de type str, tuple ou list. L accès à un terme : x[k] est le terme de rang k (la numérotation commence à 0) L instruction a in x qui dit si a est un élément de x : x = Bonjour mademoiselle len(x) 20 x[2] n x[2:] ] njour Mademoiselle x[2:5] nj #de 2 inclus à 56 exclu x[-1] #en partant de la fin e x[-2] l o in x True b in x

False Il y a aussi la méthode index, qui donne le rang du terme correspondant x.index( o ) 1 x.index( o,2) 4 x.index( o,5) 13 La methode count qui compte les termes x.count( o ) 3 3. Listes Les listes sont un outil fondamental de Python. Leur utilisation est très souple, on peut mettre n importe quoi dans une liste. On peut faire des listes de listes A=[[1,2],[3,4],[5,6]] len (A) 3 A[0] [1,2] A[0][0] 1 Les listes sont mutables A[0][0]=5 A [[5,2],[3,4],[5,6]] Ici, j ai fait des listes de même taille, mais ce n est en aucun cas une obligation. On peut définir une liste en compréhension Impairs = [2*k+1 for k in range(100)] len(impairs) 100 Impairs[5] 9 Pour ajouter un terme à la fin d une liste, on utilise la méthode append Impairs.append(201) len(impairs) 101 On peut aussi insérer un terme A.insert(2,[4,8]) A [[5,2],[3,4],[4,8],[5,6]] On peut supprimer un terme (la première occurrence de ce terme)

A.remove([3,4]) A [[5,2],[4,8],[5,6]] La méthode pop supprime le terme d indice donné, et le retourne B=A.pop(2) B [5,6] A [[5,2],[4,8]] La méthode reverse renverse la liste a = [1,2,3,4] a.reverse() a [4,3,2,1] Exercices : a) Coder en compréhension une liste qui contient les 20 premiers carrés entiers. b) Écrire un programme qui supprime de la liste précédente les carrés pairs c) Écrire un programme qui donne la liste [0!,1!,2!...20!] en commençant la liste avec [1] et en utilisant append 4. Tuples À la différence des listes, les tuples ne sont pas mutables, on ne peut pas en changer les termes. Pour modifier un tuple, il faut le réaffecter A=(1,2) A[0] 1 A[0]=3 TypeError: 'tuple' object does not support item assignment A=(5,2) A[0] 5 Les tuples sont typiquement les objets utilisés quand nous définirons des fonctions de plusieurs variables. On peut transformer une liste en tuple A=[1,2,3,4] B=tuple(A) B (1,2,3,4) Et réciproquement C=list(2*B) C [1,2,3,4,1,2,3,4] On peut même écrire A=tuple(A)

5. Chaines de caractères Un caractère individuel est une chaine de longueur 1. Chaque caractère est codé par un nombre (Python utilise le codage UTF-8 par défaut). La fonction donnant le caractère en fonction du nombre est chr(x), la fonction donnant le nombre en fonction du caractère est ord(x). Ainsi chr(65)= A et ord(? )=63 Comme les tuples, les chaines de caractère ne sont pas mutables. On a cependant des possibilités plus nombreuses : On peut comparer des chaines, la comparaison se fait de gauche à droite, caractère par caractère (en fonction des nombres associés). Abc > ABC True # car ord( B )=66 et ord( b )=98, donc B < b 12 > 5 #ici ce sont les nombres True 12 > 5 False # car 1 < 5 Transformation en liste Ma_chaine= Bonne nuit les petits list(ma_chaine) ['B','o','n','n','e','','n','u', 'i','t', '','l','e','s','','p', 'e','t', 'i','t', 's'] Ma_chaine.split() ['Bonne','nuit','les', 'petits'] Ma_chaine.split( e ) ['Bonn',' nuit l', 's p', 'tits'] #on peut choisir le séparateur Remplacer : on utilise la méthode replace() Ma_chaine.replace(, _ ) Bonne_nuit_les_petits Exercices a) Les chaines de caractères n ont pas la méthode reverse. Écrire un programme qui demande un texte à l utilisateur, et écrit ce texte à l envers (ce programme commence par texte = input( Entrez votre texte ), instruction qui attend un texte, et qui le range dans la variable texte). b) Copiez dans votre presse papier le texte La cigale ayant chanté tout l été se trouva fort dépourvue quand la bise fut venue. Créez une variable, copiez-y le texte, et écrivez un programme qui écrit ce texte en changeant toutes les minuscules non accentuées en majuscules. Rappel : les majuscules vont de A(65) à Z(90), les minuscules de a(97) à z(122). c) Reprenez la cigale, et écrivez u programme qui donne la première lettre de chaque mot

Fonctions 1. Création d une fonction C est assez simple def factorielle(n) : P=1 For k in range(1,n+1) # de 1 inclus à n+1 exclu P=p*k return P factorielle(5) 120 2. On peut créer des fonctions de plusieurs variables from math import sqrt def hypotenuse(a,b) : return sqrt(a*a+b*b) Les variables peuvent être des listes, des chaines de caractère, et même des fonctions def somme (liste): n = len(liste) S=0 For k in range(n) : S=S+liste[k] Return S A=[1,3,5,8,12] somme(a) 29 3. Une function sans argument def bravo() : # il faut les parenthèses return Bon travail!!! N oubliez pas de rappelez cette fonction de temps en temps 4. Les fonctions lambda C est une autre manière de définir une fonction f = lambda x : x**3-5*x**2+2*x+1 f(2) -7 delta = lambda a, b, c : b**2-4*a*c delta(1,2,1) 0 5. Exercices a) On peut considérer qu on polynôme = + + + + est codée par la liste =[,,, ]. Programmer la fonction evalue_poly(p,x) qui à un polynôme considéré comme une liste et un réel associe le calcul de (). b) De même, programmer la fonction derive_poly(p) qui à un polynôme associe le calcul de sa dérivée c) Que fait la fonction suivante?

Mystere = lambda n : [k for k in range(1,n+1) if n%k==0] Codez la même fonction avec def. d) Codez la fonctions liste_isssues = lambda L,x :??? qui donne tous les indices de L dont le terme est égal à x.

Algorithmes de base 1. Écrire une fonction resolution(a,b,c) qui retourne la (ou les) solutions réelles de l équation ++ =0, et None si elle n a pas de solution. La tester sur divers exemples. (None signifie pas de sortie). 2. À l aide d une boucle for, calculer où la suite est définie par = 5, =ln (1+2 )(le logarithme népérien est dans la bibliothèque math, sous le nom de log) 3. Écrire un programme qui reçoit comme donnée un entier et qui calcule!. Exécutez ce programme pour n = 10 7, n=10 8 (vous pouvez interrompre l exécution en cliquant sur shell, redémarrer mais tout ce qui a été fait dans la console sera perdu. 4. Écrire une fonction max(a) qui retourne la plus grande valeur de a (évidemment, a doit être de type list, tuple ou str). La tester. 5. Écrire la fonction rang_max(a) qui retourne le premier indice où apparait la plus grande valeur de a 6. Écrire une fonction moy(a) qui calule la moyenne de a (à condition que a soit une liste de nombres. Raffinement possible : Compléter cette fonction en testant si le type de chaque terme est float ou int afin de faire return None plutôt qu un message d erreur. Aide : les principes de chaque algorithme 1. Calcul du discriminant, puis deux tests. On peut utiliser elif qui est la contraction de else if. N oubliez pas d importer la racine carrée. 2. Une variable U contient les termes successifs de la suite 3. Une variable S contient les valeurs successives de la somme, l instruction de base est "="+ (regardez la factorielle dans le chapitre précédent) 4. Une variable M contient le maximum des k premiers termes tant qu on n est pas au bout de la liste. 5. C est pareil, sauf qu il faut retenir l indice du maximum.

Des algorithmes au programme de 1 ère année 1. Recherche par dichotomie dans un tableau trié Énoncé du problème : étant donnée une liste triée de nombres, rechercher si un élément x est un terme de la liste et répondre son indice. Il y a de nombreuses manières d écrire ce programme Dans tous les cas, il y aura certainement def dicho(a,x) : n=len(a) Une borne gauche et une borne droite qui sont égales au début à 0 et n-1 L indice que l on traite est la moyenne entre gauche et droite (attention, utiliser // pour la division entière) : on compare a[indice] et x S ils sont égaux, on a gagné et on retourne l indice Sinon, on change suivant le cas la borne gauche ou la borne droite Et ce tant que l écart entre les deux bornes dépasse 1 Il faut être vigilant au cas où le nombre recherché est une des extrémités de la liste. Utilisation de ce programme : Nous allons créer une liste triée de 100 termes, en partant d un nombre au hasard, et chaque terme suivant sera obtenu en ajoutant un nombre aléatoire(mais positif) au terme précédent from random import randint # randint donne des entiers au hasard entre deux bornes a=[randint(0,20)] #un premier terme au hasarddans une liste de 1 élément for k in range(99) : a.append(a[k]+randint(1,20)) #la methode append ajoute un terme à la fin de la liste x=input( Quel nombre recherchez vous?) dicho(a,eval(x)) #eval car x est une chaine de caractères 2. Recherche du zéro d une fonction par dichotomie Si f est une fonction continue monotone sur [a; b], et que f(a) et f(b) sont de signes contraires, alors f s annule une unique fois sur [a; b]. L algorithme de dichotomie est le suivant : c = (a+b)/2 Si f(a) et f(c) sont de même signe (et donc la solution est entre c et b), remplacer a par c, sinon remplacer b par c Continuer tant que l écart b-a est plus grand qu une valeur préalablement fixée. Rappel : pour savoir si deux nombres sont de même signe, le plus simple est de tester le signe de leur produit 3. Calcul approché d une intégrale par la méthode des rectangles. f est une fonction, a, b les bornes et n le nombre de divisions La largeur de chaque rectangle est # = $%&. On divise l intervalle [,] en [ =,,, =], les forment une suite arithmétique de raison # donc =+#. % La somme de Riemann de gauche est donc " =#!'( ), celle de droite ( =# '( ). Reste à compléter le programme!

def rectangles (f,a,b,n) : l = (b-a)/n S,T =0,0 For k in range(n) : S = S+ T=T+ Return Si la fonction f est croissante, les deux valeurs S et T encadrent l intégrale de f. Dans tous les cas, la moyenne de S et T est la valeur approchée de l intégrale de f par la méthode des trapèzes. Utilisez cette méthode pour obtenir en valeur approchée de ) *+ -. (en faisant, varier n de 10 à 10 6. Avant de faire le calcul, il faudra définir la fonction f. 4. Recherche d un mot dans un texte. Le problème : étant donné un texte, rechercher si un mot est présent dans ce texte, combien de fois et à quels emplacements. C est un problème crucial par exemple en analyse ADN, où on recherche des séquences particulières, et que les chaînes sont vraiment très longues. Algorithme naïf : on parcourt le texte, lettre par lettre. Si la lettre considérée est la même que la première lettre du mot, on regarde la lettre suivante, et ainsi de suite. Si tout est bon, on conserve l indice. Dès qu une lettre n est pas bonne, on passe à l indice suivant Il y aura deux boucles for imbriquées, le plus simple est de sortir de la seconde dès qu une comparaison échoue. Compléter le programme def mot_en_texte(texte,mot) : n = len(texte) m = len(mot) indices=[] # on prépare la liste où seront conservés les indices for k in range(n-m+1) :#On ne doit pas tester s il ne reste plus de place for j in range (m): if texte[ ]!=mot[ ]: break # sortie dès qu il n y a pas coïncidence if # À quelle condition a-t-on une solution? indices.append( return *