Algorithmique et programmation L2 MIASHS-Math TP 1 2020-2021 Langage Python : r
Algorithmique et programmation L2 MIASHS-Math TP 1 2020-2021 Langage Python : r´ evisions On utilisera Python 3. En salle informatique, se connecter sous FreeBSD ou Linux. Les diff´ erentes fa¸ cons de faire du Python Mode interactif. On peut utiliser Python de fa¸ con interactive : taper python3 dans une console pour d´ emarrer. Vous pouvez alors taper des commandes en Python. Exemple : >>> a=3 >>> b=5 >>> a+b 8 >>> a*b 15 Il suffit de taper ctrl-D pour sortir du mode interactif. On peut d´ efinir des fonctions en mode interactif mais ce n’est pas la m´ ethode adapt´ ee pour ´ ecrire des programmes. Avec un ´ editeur de texte. Lancer un ´ editeur de texte (par exemple emacs) et taper votre programme (ne pas oublier de sauver). Par exemple le programme fichier.py : def somme(a,b): return a+b print(somme (3 ,5)) Ouvrir un terminal, se placer dans le r´ epertoire o` u se trouve le programme (avec la commande cd) et taper python3 fichier.py. Le programme est ex´ ecut´ e. La fl` eche vers le haut permet d’acc´ eder aux commandes pr´ ec´ edentes. Il est donc facile de modifier le programme puis de le relancer. Noter que dans le mode interactif, le r´ esultat de la commande s’´ ecrit en-dessous ce qui n’est pas le cas quand on lance un programme (pour s’en convaincre, changer le programme en supprimant la fonction print). Jupyter. Le notebook jupyter prend place dans un navigateur. La feuille est constitu´ ee d’une suite de cellules qui peuvent ˆ etre du code Python, dans lesquelles on peut d´ efinir des fonctions Python et les appeler, ou des cellules de texte en markdown, avec la possibilit´ e d’´ ecrire des formules math´ ematiques en latex. Quand on modifie une cellule d´ efinissant une fonction, il ne faut pas oublier de l’´ evaluer ` a nouveau pour que les modifications soient prises en compte. Les environnements de programmation. Ils sont indispensables pour d´ evelopper de gros programmes. Puissants, ils peuvent ˆ etre aussi difficile ` a maˆ ıtriser. Si vous souhaitez en essayer un vous pouvez par exemple essayer pyzo. Les commentaires en Python Les commentaires en Python suivent le symbole #. Ceci est tr` es utile pour ajouter des explications ou commenter des lignes de code (elles ne seront pas ex´ ecut´ ees). Types de base, op´ erations, conversion Le plus simple est d’utiliser le mode interactif pour cette partie, dans jupyter ou ` a d´ efaut dans une console. 1. La commande type() permet de connaˆ ıtre le type d’un objet. De quel type sont les objets True, 10, 2.3, ’bonjour’ ? 2. Tester les op´ erations + et * entre deux entiers, entre un entier et une chaˆ ıne de caract` eres, entre deux chaˆ ınes de caract` eres. Quand ces op´ erations sont-elles possibles et que font-elles ? 3. Les op´ erations bool´ eennes s’´ ecrivent and, or, not. Que renvoie not (False or True) ? 4. Les op´ erations de comparaison se font avec ==,<, <=, etc. Attention ` a ne pas utiliser l’affectation = ` a la place du test d’´ egalit´ e. Que vaut 2==3 ? 5. La conversion vers une chaˆ ıne de caract` eres se fait avec str(). Tester la conversion de diff´ erents types d’objets vers une chaˆ ıne de caract` eres. 6. Essayer de convertir une chaˆ ıne de caract` eres en entier. Quand cela est-il possible ? Remarque : les variables n’ont pas de type en Python. Par exemple, il est tout ` a fait possible de faire : >>> a=3 >>> a=’bonjour ’ La variable a contient successivement des objets de types diff´ erents. Instructions de test On rappelle sur un exemple la syntaxe des tests. x=2 if x==1: print(’egal a 1’) elif x==2: print(’egal a 2’) elif x==3: print(’egal a 3’) else: print(’autre valeur que 1,2 ou 3’) Comme pour les fonctions, c’est l’indentation qui permet de d´ elimiter les blocs. Les parties en elif et else sont optionnelles. 1. ´ Ecrire une fonction maximum(a,b) qui renvoie le plus grand des entiers a, b pass´ es en param` etres (pour cet exercice, sans utiliser la fonction max de Python). 2. ´ Ecrire une fonction milieu(a,b,c) qui renvoie l’´ el´ ement du milieu si a, b, c sont distincts et le plus grand ´ el´ ement sinon. Les listes 1. Ex´ ecutez la commande suivante : >>> L=[1,3,’ab’,2,’c’ ,0] Examinez le type de L, sa longueur (fonction len()). Acc´ eder aux diff´ erents ´ el´ ements de L en inspec- tant par exemple L[3]. Quel est l’indice du premier ´ el´ ement de L ? L’indice du dernier ? 2 2. Tester les op´ erations ´ el´ ementaires sur les listes. Toutes se font en temps constant (il s’agit d’un coˆ ut amorti pour append et pop, c’est-` a-dire que le coˆ ut moyen d’une telle op´ eration est constant quand on le consid` ere sur tout le d´ eroulement de l’ex´ ecution). — Cr´ eation d’une liste vide [] ; — Longueur d’une liste len(L) ; — Lecture et modification d’un ´ el´ ement, par exemple L[1] ou L[2]=7 ; — Ajout d’un ´ el´ ement ` a la fin d’une liste : L.append(3) ; — Suppression du dernier ´ el´ ement d’une liste : x=L.pop(). Il existe de nombreuses fonctions et m´ ethodes s’appliquant aux listes. Attention au coˆ ut de ces op´ erations lorsqu’on ´ evalue la complexit´ e d’une fonction. Ci-dessous deux exemples de telles fonc- tions : — Concat´ enation de deux listes avec + ; — Cr´ eation d’une sous-liste avec la syntaxe L[debut:fin] (` a noter : les arguments d´ ebut et fin sont optionnels). 3. ´ Ecrire une fonction concatenation(L,M) retournant une nouvelle liste qui est la concat´ enation des listes L et M ` a partir des op´ erations de base sur les listes uniquement. 4. De mˆ eme, ´ ecrire une fonction sousliste(L,debut,fin) (il n’est pas demand´ e de faire en sorte de g´ erer les arguments optionnels). La boucle for On rappelle la syntaxe par l’exemple suivant : L=[1,3,’ab’,2,’c’ ,0] for x in L: print(x) 1. Ecrire une fonction somme(L) retournant la somme des ´ el´ ements de la liste L. On veut souvent faire une boucle du type : “pour i allant de 1 ` a 10” En Python, on utilise pour cela la fonction range qui cr´ ee la liste d’entiers. Pour la boucle ci-dessus on ´ ecrit : for i in range(1,11): La syntaxe est range(fin), ou range(debut,fin) ou encore range(debut,fin,pas). Comme l’objet cr´ e´ e par range n’est pas r´ eellement la liste d’entiers mais un objet se comportant comme tel, on convertit l’objet retourn´ e par range pour voir s’afficher la liste : par exemple list(range(4)). 2. Que retournent les appels suivants ? (Essayer de r´ epondre avant de tester.) list(range(10)) list(range(2, 12)) list(range(2, 12, 3)) 3. Utiliser la fonction range pour produire les listes suivantes : [0, 1, 2, 3, 4] [1, 3, 5, 7, 9, 11] [13, 12, 11, 10, 9, 8]. 3 La boucle while 1. On d´ efinit la suite (un) par u0 = 0 et un+1 = u2 n + 3un + 1 pour tout n ∈N. ´ Ecrire une fonction rang(A) qui retourne le plus petit entier n tel que un ⩾A. 2. Que calcule la fonction suivante ? def f(n): k=1 while(k<n): k=3*k return k Exercice : affichage de damiers 1. ´ Ecrire un programme qui affiche un damier carr´ e de taille n. Par exemple : >>> damier (5) .#.#. #.#.# .#.#. #.#.# .#.#. 2. ´ Ecrire un programme qui affiche un damier carr´ e de taille n avec des cases de taille c. Par exemple : >>> damier2 (4,3) ...###...### ...###...### ...###...### ###...###... ###...###... ###...###... ...###...### ...###...### ...###...### ###...###... ###...###... ###...###... Exercice : nombre d’occurrences dans une liste de listes Le but de cet exercice est de compter le nombre d’occurrences d’un ´ el´ ement dans une liste de listes. 1. ´ Ecrire une fonction nbocc(L,x) prenant en entr´ ee une liste L et retournant le nombre d’occurrences de x dans L. Par exemple, nbocc([1, 3, 3, 5, 3, 8, 3], 3) doit renvoyer 4. 2. ´ Ecrire une fonction listeocc(LL,x) prenant en entr´ ee une liste de listes d’entiers LL = [L0, L1, . . . , Lk] et un entier x et retournant la liste [n0, n1, . . . , nk] o` u ni est le nombre d’occurrences de x dans Li. 3. ´ Ecrire une fonction totalocc(LL,x) prenant en entr´ ee une liste de listes d’entiers et retournant le nombre total d’occurrences de x dans les sous-listes de LL. 4 uploads/Litterature/ tp-1 4 .pdf
Documents similaires
-
69
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Nov 16, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.1375MB