Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: Info123
Views: 120

Projet pluridisciplinaire TP2 : python

Le logiciel Sage est basé sur le langage de programmation python. Dans ce TP, nous allons apprendre les bases de la syntaxe python et des structures de données tels qu'ils sont utilisés dans Sage.

Les Listes

Les listes sont une des structures fondamentales du python. Elles sont l'équivalent des tableaux du C++.

La cellule suivante définit et affiche une liste. Pour cela on utilise les crochets [ ].
l = [2, 1, 3] l ︠add5ab8d-a848-4fe7-b723-32b70264b722i︠ %html <p> Le python est un langage dynamique, la <em>déclaration</em>, <em>allocation</em> et <em>initialisation</em> se font en une seule commande. </p> <p> On accède aux éléments de la liste de la même façon qu'en C++. On peut aussi les modifier. </p>

Le python est un langage dynamique, la déclaration, allocation et initialisation se font en une seule commande.

On accède aux éléments de la liste de la même façon qu'en C++. On peut aussi les modifier.

l[0] ︠715109b0-322b-4d60-8ae7-ede2e436a1c3︠ l[0] = 4 l ︠b6ffc59a-df63-4aa4-b117-63e6138af2fdi︠ %html <p> <strong>Affichez les 2eme et 3eme élements de la liste.</strong> </p>

Affichez les 2eme et 3eme élements de la liste.

︠545b6ecb-58d2-42d2-a914-a2585522a0bf︠ ︠5943dac4-92ec-49bd-a83c-d032196cf306i︠ %html Contrairement au C++, une liste peut contenir des éléments de type différents.
Contrairement au C++, une liste peut contenir des éléments de type différents.
liste_mixte = [5,"bla","bli",3.2] liste_mixte ︠d7dcb8e9-be4f-4842-a853-60488c062b09i︠ %html Pour connaître la taille d'une liste, on utilise la fonction <code>len</code>.
Pour connaître la taille d'une liste, on utilise la fonction len.
len(l) len(liste_mixte) ︠22d00844-ac02-4b95-9ff4-39be5295f91fi︠ %html <p> Pour ajouter un élément à la fin de la liste, on utilise la méthode <code>append</code> (équivalent du <code>push_back</code> du C++) </p>

Pour ajouter un élément à la fin de la liste, on utilise la méthode append (équivalent du push_back du C++)

l.append(5) l ︠fcd9f228-5c0f-414a-91e7-5bd0be34d0d2i︠ %html <p> Par ailleurs, la méthode <code>pop</code> permet de supprimer le dernier élément. </p>

Par ailleurs, la méthode pop permet de supprimer le dernier élément.

v = l.pop() v l ︠bb3a112a-af4e-49f8-8146-d82dee17b965︠ ︠fe92af0e-39a5-4759-bfaa-e0a14c6fd1ebi︠ %html <p> <strong>Créez une liste contenant 2, 4 et 6. Puis ajoutez 8 à la fin de la liste en utilisant <code>append</code>.</strong> </p>

Créez une liste contenant 2, 4 et 6. Puis ajoutez 8 à la fin de la liste en utilisant append.

︠3a780f19-0aa4-4e21-ba07-18ae8ff4599ei︠ %html Pour parcourir les éléments d'une liste, on utilise une boucle <code>for</code> de la façon suivante :
Pour parcourir les éléments d'une liste, on utilise une boucle for de la façon suivante :
l = [2,2,4,3,5] for v in l: print v ︠aed49c3c-4196-4d3b-a3b5-f78d530ebd69i︠ %html <p> <strong>Attention !</strong> La syntaxe et la sémantique de la boucle for sont très différentes en python et en C++. En python, on parcourt directement les éléments de la liste sans passer par un indice. Pour énumérer les éléments de la liste et leurs indices, on utilise la syntaxe suivante : </p>

Attention ! La syntaxe et la sémantique de la boucle for sont très différentes en python et en C++. En python, on parcourt directement les éléments de la liste sans passer par un indice. Pour énumérer les éléments de la liste et leurs indices, on utilise la syntaxe suivante :

l = [2,2,4,3,5] for i,v in enumerate(l): print i, v ︠28369ac5-6e07-47e5-806e-b622a1396237︠ l = [2,2,4,3,5] for i,v in enumerate(l): l[i] = v+1 l ︠ba7ede22-5224-4185-ad71-9b30888729fai︠ %html <p> <strong>Exécutez la cellule suivante, puis écrivez une boucle for pour afficher le carré des éléments de la liste. Puis écrivez une seconde boucle qui remplace chaque élément par son carré.</strong> </p>

Exécutez la cellule suivante, puis écrivez une boucle for pour afficher le carré des éléments de la liste. Puis écrivez une seconde boucle qui remplace chaque élément par son carré.

ma_liste = [2,3,4,5,6] ︠5320f626-a694-4cc3-b84c-b080b397da71︠ ︠9b6bf7f1-f390-4e33-9b04-52ff95e6716ci︠ %html <h3> Structure de boucles et de contrôle en python </h3>

Structure de boucles et de contrôle en python

Vous avez peut-être remarquer que l'on n'utilise pas d'accolades en python. En effet, pour commencer un bloc de type if, for ou while, on utilise les deux points : suivi d'un changement d'indentation. C'est l'indentation qui marque la fin des blocs.

Exécutez les exemples suivant

i = 2 while i<=10: i = i+1 print i ︠ab9a80b7-56df-4e53-8f22-7c023672cc45︠ ︠cd1bf6be-26a9-4232-a05a-24afeaed7839︠ i = 5 while i!=1: print i if i%2 == 0: i = i/2 else: i = i*3 +1 ︠161ce867-8622-4191-9691-8aab783b9bb2︠ ma_liste = [2,3,3,4,5,6,8,9] for v in ma_liste: if v%2 == 1: print v ︠73764f53-9f19-469c-a06c-3eb21975f4b5i︠ %html <p> <strong>La cellule suivante contient une erreur d'indentation. Exécutez-la pour afficher l'erreur puis corrigez et exécutez à nouveau.</strong> </p>

La cellule suivante contient une erreur d'indentation. Exécutez-la pour afficher l'erreur puis corrigez et exécutez à nouveau.

a = 2 while a<=100: print a a = 2*a ︠b95476ee-7665-4aad-99e3-b0e41bc99abb︠ ︠05810c4d-37e7-497b-a17c-7823b1dd6b10i︠ %html <p> <strong>Ecrire une boucle <code>for</code> qui n'affiche que les valeurs de la liste inférieures à 10.</strong> </p>

Ecrire une boucle for qui n'affiche que les valeurs de la liste inférieures à 10.

ma_liste = [4,12,13,8,6,11,9] ︠1f90267a-6329-4762-a07b-ce27edb081ba︠ ︠425de0e4-3e38-403b-be24-c56e858d395ci︠ %html <p> <strong>Ecrire une boucle <code>while</code> pour afficher les valeurs $i^2$ pour $1\leq i \leq 10$.</strong> </p>

Ecrire une boucle while pour afficher les valeurs i2i^2 pour 1i101\leq i \leq 10.

︠669faa2f-d039-4464-8fe5-e9352af70934︠ ︠1ed8b2da-f8da-42cb-83a1-3c37adf46897i︠ %html <p> La fonction suivante est très pratique : elle permet de créer une liste d'entiers entre deux valeurs données. <strong>Exécutez les exemples pour comprendre son fonctionnement</strong> </p>

La fonction suivante est très pratique : elle permet de créer une liste d'entiers entre deux valeurs données. Exécutez les exemples pour comprendre son fonctionnement

range(10) ︠13d5e413-805a-4b5c-8235-318155b473b9︠ range(1,23) ︠dff2043c-a3f6-47f6-929c-fdfa98ee8558︠ range(2,13,2) ︠d360307d-a29f-44b7-8fe2-1bdd168d2225︠ range(10,0,-1) ︠ae1ac08f-e199-4691-b483-31d8fcb9ea6ei︠ %html <strong><ul> <li>Affichez les entiers $10 \leq i \leq 20$ </li> <li>Affichez les entiers pairs inférieurs à 20</li> </ul></strong>
  • Affichez les entiers 10i2010 \leq i \leq 20
  • Affichez les entiers pairs inférieurs à 20
︠890e7f15-9882-489f-a29a-fa8d009496d8︠ ︠8a617476-bca5-4714-b282-f15c74d2b5f5i︠ %html <p> On peut utiliser <code>range</code> avec une boucle <code>for</code>. </p>

On peut utiliser range avec une boucle for.

for i in range(10): print i ︠fc8a642d-4df9-40de-af94-808074974247 %html <p> <strong>Utilisez une boucle <code>for</code> avec <code>range</code> pour afficher les valeurs $i^2$ pour $1\leq i \leq 10$.</strong> </p>

Utilisez une boucle for avec range pour afficher les valeurs i2i^2 pour 1i101\leq i \leq 10.

︠86de0799-907c-485c-8675-04a31490921f︠ ︠b3ac362b-75fb-47ea-8560-adb9b5ebe519i︠ %html <p> <strong>Remarque :</strong> Il est très facile de tester si un élément appartient à une liste. </p>

Remarque : Il est très facile de tester si un élément appartient à une liste.

l = [1,2,3] 3 in l ︠ecc6c380-890b-41de-b280-bd341d4ef7c5︠ if 4 in l: print "l contient 4" else: print "l ne contient pas 4" ︠280a4aff-768d-498c-b58d-03d3c34d26f2i︠ %html <p> <strong>Exercice : </strong> dans la cellule suivante, on définit 3 listes <code>l1,l2,l_resultat</code>. Ecrivez une boucle <code>for</code> pour que <code>l_resultat</code> contienne les valeurs qui sont à la fois dans <code>l1</code> et <code>l2</code>. </p>

Exercice : dans la cellule suivante, on définit 3 listes l1,l2,l_resultat. Ecrivez une boucle for pour que l_resultat contienne les valeurs qui sont à la fois dans l1 et l2.

l1 = [2,3,5,6,9,10] l2 = [1,2,3,4,5] l_resultat = []
︠ec8fb255-1e91-4e75-b30b-64ef43f9645fi︠ %html <h3> Autres structures </h3>

Autres structures

Un dictionnaire est un tableau dont les indices peuvent être eux mêmes des objets (par exemple, des chaines de caractères). Par exemple, le dictionnaie suivant associe des notes et des élèves.

d = dict() d["Anna"] = 4.5 d["Boris"] = 18. d["Lisa"] = 18.5 d["Ahmed"] = 15. d["Lou"] = 10. d["Martin"] =5.5 d ︠a19f925f-a317-485d-9028-af26b877a2cc︠ for nom in d.keys(): print nom ︠8cbd113b-cbc3-4d57-878c-1cc92fbd6348︠ for nom in d.keys(): print "L'étudiant(e) " + nom + " a obtenu " + str(d[nom]) ︠9c7735d2-f0bb-468f-9321-e686bd4fbd15︠ d.values() ︠4c427638-2bce-46dc-9213-1e3d580d2072i︠ %html <p> <strong>Exercice : </strong>après avoir observer les exemples précédents. Calculez la moyenne des notes et affichez le nom de l'étudiant ayant eu la meilleure note. </p>

Exercice : après avoir observer les exemples précédents. Calculez la moyenne des notes et affichez le nom de l'étudiant ayant eu la meilleure note.

︠18a85b17-0c49-4eeb-9bbc-28cf623e7c61i︠ %html <h3> Listes doubles </h3> <p> Tout comme en C++, il est possible de faire des listes de listes. </p>

Listes doubles

Tout comme en C++, il est possible de faire des listes de listes.

l_double = [[1,2,3],[4,5,6]] l_double ︠d3f1304a-966a-415f-933c-99059a0ba87c︠ l_double[0][1] ︠33e289dc-29ff-4256-a6fa-95100d30c927︠ %html <p> <strong>Affichez la valeur 4 en utilisant <code>l_double</code>.</strong> </p>

Affichez la valeur 4 en utilisant l_double.

︠8e171201-97f7-4257-8fb0-59296f46efadi︠ %html <p> Voici un exemple de double boucle <code>for</code> qui affiche les valeurs de <code>l_double</code>. </p>

Voici un exemple de double boucle for qui affiche les valeurs de l_double.

for ligne in l_double: for v in ligne: print v ︠fa54a2b7-838b-43a3-b714-725e0988c0bai︠ %html <p> Voici un exemple qui affiche les lignes de <code>l_double</code> </p>

Voici un exemple qui affiche les lignes de l_double

for ligne in l_double: print ligne ︠f6fd9fd0-6898-419f-8155-1abd2e8bee0ci︠ %html Les matrices sont une application mathématique des listes doubles. Observez les exemples suivants.
Les matrices sont une application mathématique des listes doubles. Observez les exemples suivants.
m1 = Matrix([[1,1,3],[4,5,5],[6,7,9]]) m1 ︠49f45656-9412-4dab-b9ff-4b0612b2e0aa︠ m1.determinant() ︠f1501b0d-f032-4a37-9f13-50f8d6c3bc39︠ m1.inverse() ︠cf21635d-ba78-4456-be62-43d98900e4d7︠ m1 *m1.inverse() ︠3d07b282-1664-4105-9b04-9022469d3ed8︠ m2 = Matrix([[1,0,0],[1,1,0],[1,1,1]]) m2 ︠acf46a18-255c-40d2-8e27-7478ffcef6deiiiiii︠ %html <strong><ul> <li>Calculez le produit de $m_1 \times m_2$</li> <li>Calculez le déterminant et l'inverse de $m_2$</li> <li>Même exercice avec une autre matrice $m_3$ que vous définirez </li> </ul></strong>
  • Calculez le produit de m1×m2m_1 \times m_2
  • Calculez le déterminant et l'inverse de m2m_2
  • Même exercice avec une autre matrice m3m_3 que vous définirez