2017
PC* Travaux dirigés python 1
Mardi 20 septembre
Rappels de syntaxe / Indications
Exercice 1
•Python est un langage modulaire : de nombreuses fonctions supplémentaires sont dénies dans des
modules que l’on doit importer en début de session intéractive pour y avoir accès (commande import
random par exemple).
Par exemple, le module math contient un grand nombre de fonctions (pour les lister, après import
math, écrire la commande dir(math)) : pour avoir de l’aide sur le module math, taper help(math) et
pour avoir de l’aide sur la fonction sqrt du module math, taper help(math.sqrt).
Pour accéder à la fonction sqrt de math, taper math.sqrt
Dans l’exercice 1, on a importé tout le module random, et on a appelé la fonction random de ce module
à l’aide de random.random
On aurait pu aussi importer tout le module random via «from random import ∗», puis accéder à la fonction random via «random», mais méthode à
éviter (conit potentiel de noms entre plusieurs modules).
•range(30) désigne l’ensemble d’entiers J0,29Kou encore J0,30J.
•Noter également : l’initialisation à la liste vide, la syntaxe de la boucle for (avec le :) et l’indentation !
•python dispose d’une fonction max
•Ne pas oublier l’initialisation de b.
•Pour créer la liste [0,0,0], on peut soit [0] * 3
soit [0 for i in range(3)]
•Avec une liste L, on peut parcourir les indices de cette liste (via «for k in range(len(L))») ou par-
courir les éléments de cette liste (via «for elt in L»).
•Aectations augmentées de variables : s+=1 désigne s=s+1, p*=2 désigne p=p*2 (fonctionne
aussi avec /=, //=, %=,**=, )
Exercice 2
•Pour calculer le temps d’exécution d’une instruction, on peut procéder ainsi :
on import le module time
puis, avant le début de l’instruction (resp. à la suite de l’instruction), on met «debut = time.clock()»
(resp «n = time.clock()»)
puis on ache le résultat via «print(n - debut)»
•Pour une fonction récursive linéaire, on pourra dénir une fonction aux
Exercice 3
1. Si Lest une liste, L.append(a)permet d’ajouter en dernière position l’élément aà la liste L.
L.reverse() permet de «renverser» la liste L.
n%2(resp. n//2) renvoie le reste (resp. le quotient) de la division euclidienne de npar 2.
3 Si L= [ak, . . . , a0]est la liste correspondant à l’écriture en base 2 de n, alors n=
k
X
i=0
ai2i.
2016-2017 3/4