Année universitaire 2016–2017 Travaux dirigés Initiation à l’informatique et à l’abstraction en biologie (I) 2V315 Licence Sciences de la Vie Informations générales Responsables de l’UE : Sophie Pasek et Jacques Pédron Secrétariat : Couloir 33-34 1er étage porte 112. — Chaque séance comporte des exercices complémentaires pour s’entraîner. — Documents en ligne sur le site sakaï du module : — le calendrier (pour les cours du soir sur le site de la section AHA 1 ) ; — la version numérique de ce fascicule ; — tous les fichiers à utiliser dans les exercices ; — des liens utiles relatifs à la programmation en Python ; — des liens utiles pour pratiquer les exercices de programmation chez soi. — Pour pratiquer les exercices de programmation sur le campus, vous pouvez aller travailler à l’UTES. Vous y trouverez un environnement de travail analogue à celui des salles de TD. — Centre pédagogique de ressources multimédias pour les étudiants et enseignants de l’université, L’UTES 2 assure un accompagnement pédagogique des étudiants en libre-service et plus généralement, il est le centre d’innovation pédagogique par les TICE de l’UPMC ; — Ouverture du centre : du lundi au vendredi, de 8h05 à 18h, sans interruption ; — Accueil et salles de travail de l’UTES : Atrium 1er étage. 1. http://abiens.snv.jussieu.fr/AHA 2. http://www.lutes.upmc.fr/ UPMC – Licence 2 TD – 1 Notions de base : Variable - Affectation - Saisie - Affichage Notions de cours Variables La formalisation d’un problème nécessite la manipulation de données de différentes natures (numérique, alphanumérique, booléen, ...). Ceci s’effectue à l’aide de variables. Une variable permet de représenter une donnée par un nom. Chaque variable est déclarée au début de l’algorithme : on indique pour chaque variable un nom et un type : Déclarer nom : type Par exemple : Déclarer longueur, rayon : réel Déclarer titre : chaîne de caractères Types de données Le type d’une variable indique la nature des données qui y sont stockées. Il définit les valeurs possibles et les opérations que l’on peut effectuer sur ces valeurs. Par exemple, il est possible de diviser des nombres (entiers ou réels) entre eux, mais pas des chaînes de caractères ; on peut passer une chaîne de caractères en majuscules, mais pas un nombre, etc. Type de donnée Entier Réel Chaîne de caractères Booléen Exemples de valeurs Opération spécifique 7 — 2 — -71 7 modulo 3 -6,0 — 3,14 — 21,672541 arrondi(3,14) ’z’ — ’Toto’ — ’Turlututu !’ Majuscule(’Toto’) Vrai — Faux ¬ Faux Résultat 1 3 ’TOTO’ Vrai L’opération de base sur une variable est l’affectation, c’est-à-dire le stockage d’une valeur dans la variable. On distingue : Affectation Littérale Expression Saisie utilisateur Variable Syntaxe Exemple nom ← valeur x←5 nom ← expression y ← 29 - 4x nom ← [CLAVIER] R ← [CLAVIER] nom2 ← nom z←x Les variables en python Dans un langage de programmation, le nom de la variable constitue un lien vers une adresse dans la mémoire de l’ordinateur. La taille de l’emplacement mémoire nécessaire au stockage de la valeur dépend de son type (entier, réel, caractère, booléen). UPMC – Licence 3 2V315 TD 1 Type Exemples de valeurs int 7 –- 2 –- -71 float -6.0 –- 3.14 –- 21.672541 string ’z’ –- ’Toto’ –- ’Turlututu !’ bool True –- False Opération 7 % 3 round(3.14) ’Toto’.upper() not False Résultat 1 3.0 ’TOTO’ True Affectation et L-value En Python, la création d’une variable et l’allocation de mémoire correspondante s’effectuent lors de son initialisation, c’est-à-dire lors de la première affectation effectuée avec cette variable. L’opérateur d’affectation est le signe =. Lors de l’affectation, la valeur à stocker est située à droite de l’opérateur, c’est la r-value (pour right value). L’emplacement mémoire qui reçoit la r-value est située à gauche de l’opérateur, c’est la l-value. La r-value peut être une valeur littérale, une variable, une expression. La l-value est obligatoirement un emplacement mémoire. Dans le cadre de cette UE, il s’agira toujours d’un nom de variable. Commandes Description Commandes Unix gedit python lancer l’application éditeur de texte gedit lancer l’interpréteur python interactif Commandes Python affecter r-value dans l-value r-value : valeur littérale, variable, expression l-value : emplacement mémoire print variable_1 [, variable_2 ] afficher variable_1 [, variable_2 ] int(variable) convertit en entier float(variable) convertit en réel str(variable) convertit en chaîne de caractères round(variable[, n]) arrondit un nombre réel [à n décimales] variable.upper() convertit une chaîne de caractères en majuscules variable.lower() convertit une chaîne de caractères en minuscules variable_1 % variable_2 renvoie le reste de la division entière variable_1 = raw_input("question") affiche question, attend une entrée au clavier, et affecte la valeur à variable_1 quit() quitte l’environnement interactif l-value = r-value NB : Les mots en italiques sont des identifiants, c’est-à-dire des noms choisis par le programmeur. Les mots en caractères droits sont des mots-clés. Les paramètres entre crochets sont optionnels. UPMC – Licence 4 2016–2017 2V315 TD 1 Exercice – 1 Environnement Python interactif Python a deux modes de fonctionnement : le mode interactif et le mode « exécution de script ». Le mode interactif est un environnement terminal où les instructions sont entrées avec le clavier. L’interpréteur donne un retour immédiat après chaque instruction. Les instructions précédentes sont gardées en mémoire. Le mode intéractif est un bon moyen pour se familiariser avec des instructions en python et pour tester la validité de la syntaxe. Pour lancer le mode interactif, il faut utiliser la commande python sans argument. Le mode « exécution de script » correspond au cas où l’ensemble des instructions en python sont écrites et sauvegardées dans un fichier texte portant l’extension .py, puis exécutées dans l’interpréteur python. Pour lancer le mode « exécution de script », il faut utiliser la commande python et donner le nom du fichier contenant les instructions (le script) en argument. a- Ouvrir un terminal Unix (ou Terminal X). b- Lancer l’interpréteur python en mode interactif dans le terminal Unix. [invite_de_commande]$ python Vous entrez maintenant dans l’environnement python interactif. Python 2.6.2 (r271:86832, Jul 31 2011, 19:30:53)! [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.! >>> NB : Le message varie selon la version de Python installée. Notez que l’invite de commande est différente de celle de l’environnement UNIX. Ici, ce sont trois signes > à la suite. Vous devez taper vos instructions en python après cette invite. c- Taper les instructions suivantes (validez chaque instruction en tapant la touche Entrée). Observez et commentez les affichages obtenus en retour. >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> 3 + 4 3 / 0 "Hello world!" a="Hello world!" print a print "a" a="Hello" b="world!" print a,b print a+b print a-b print c print a*4 print a/4 quit() UPMC – Licence 5 2016–2017 2V315 TD 1 Exercice – 2 Variables et types a- Pour chaque objet de la liste suivante, après avoir défini sa nature, l’unité dans laquelle on pourrait l’exprimer et la gamme des valeurs attendues, expliquer comment on pourrait le représenter (si c’est possible) par une variable de chacun des types cités ci-dessus : — l’âge d’un individu ; — le nombre d’enfants d’un couple ; — le nombre moyen d’enfants par couple dans une population ; — le sexe d’un individu ; — la taille d’un individu ; — le nom d’une ville, d’un pays ou d’un continent ; — une couleur. Exercice – 3 Affectation et L-value a- Indiquer pour chacune des affectations suivantes si elle est valide ou non, en justifiant votre réponse. Taper ces instructions (suivies de la touche Enter) dans l’environnement Python interactif et lire le message d’erreur le cas échéant. >>> >>> >>> >>> >>> >>> >>> >>> a b b 2 1 y b a = = = = + = = = 8 a c a 2 5 a a = + + + a 3 5 5 Exercice – 4 Types de variables a- Dans l’environnement Python interactif, taper les initialisations suivantes : >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> a b c d e f g h i j = = = = = = = = = = 9 1.7 1,7 True "r" ’r’ "Bonjour tout le monde!" "True" "9" 2 b- Utiliser la fonction type() pour connaître le type de chacune des variables initialisées. UPMC – Licence 6 2016–2017 2V315 TD 1 c- Taper les instructions suivantes, commenter leur résultat, en particulier les conversions de type (voir page 4). >>> >>> >>> >>> >>> >>> >>> print 3 * a print 3 * i k = a / j print k type(k) k = float(a) / j print k Exercice – 5 Affichage avec print a- Taper les instructions suivantes : >>> >>> >>> X = >>> X = X = 5.98765 Y = 9.66666 print "X = ",X, "et Y = ", Y 5.98765 et Y = 9.66666 print "X = ",round(X,2), "et Y = ", round(Y,1) 5.99 et Y = 9.7 b- Que peut-on dire sur l’utilisation des guillemets, des virgules, des caractères espace et de la fonction round() ? Exercice – 6 Saisie avec la fonction raw_input() a- Taper les instructions suivantes : >>> >>> >>> >>> >>> >>> X = raw_input("Entrez votre prénom : ") print "Bonjour,",X print type(X) Y=X.lower() Z=X.upper() print "On peut écrire",Y,"ou",Z b- Taper les instructions suivantes : >>> >>> >>> >>> X = raw_input("Entrez une valeur entière pour X : ") Y = 3*X print "Y = 3 *",X,"=",Y print type(X) Le résultat final semble incohérent (3 × 4 vaut 12 et non 444). En fait, raw_input() traite toutes les saisies comme étant de type string, il faut donc penser à utiliser les fonctions de conversion pour les entiers int() et les reels float(). c- Recommencer (utiliser les touches flèches haut, flèche bas pour rappeler les précédentes instructions) mais cette fois, convertir X en entier après la saisie et avant l’affectation sur Y. UPMC – Licence 7 2016–2017 2V315 TD 1 Exercice – 7 Exécution d’un programme en mode « exécution de script » a- Sortir de l’environnement python interactif avec la fonction quit() b- Lancer l’éditeur de texte gedit, en tapant : gedit & c- Dans gedit, écrire les instructions dans un fichier texte et le sauvegarder avec l’extension .py (exo7c.py). L’extension .py permet d’obtenir la coloration syntaxique du langage. Si celleci n’apparait pas, il faut l’activer (Menu Affichage, Mode de coloration, Scripts, Python). Pour lancer l’interprétation du script dans python, il faut donner le nom du fichier .py en argument de la commande. Exemple : [invite_de_commande]$ python exo7c.py python appelle l’interpréteur Python, exo7c.py est le nom du programme à exécuter. Rq : Pour pouvoir utiliser les caractères accentués dans les affichages, on doit spécifier en début de programme que l’encodage utf8 doit être utilisé avec la ligne suivante : # -*- coding: utf-8 -*Exercice – 8 Introduction à l’utilisation de sakai exo7c.py est le premier programme créé dans cette UE. Par la suite, d’autres programmes vont être écrits et seront nommés exoEq.py, suivant E le numéro de l’exercice et q la lettre de la question. Le portail sakai permet alors de retrouver ces programmes en dehors des séances de TD. La procédure à suivre est expliquée dans l’annexe sakai page 37. UPMC – Licence 8 2016–2017 TD – 2 Introduction à la programmation — nombres aléatoires Notions de cours Les nombres aléatoires Les tirages aléatoires sont fréquemment utilisés en programmation. Dans les algorithmes, on obtient un nombre aléatoire avec : X ← réel_aléatoire Affecte à X une valeur réelle pseudo-aléatoire dans l’intervalle [0,1[ N ← entier_aléatoire(a,b) Affecte à N une valeur entière pseudo-aléatoire dans l’intervalle [a,b] Pour tirer un nombre aléatoire en langage Python, on utilisera deux fonctions de la bibliothèque random. Il faudra donc importer la bibliothèque random en début de programme avec l’instruction : import random La fonction random() de la bibliothèque random renvoie une valeur réelle pseudo-aléatoire comprise dans l’intervalle [0, 1[. La fonction randint(a,b) de la bibliothèque random renvoie une valeur entière pseudoaléatoire comprise dans l’intervalle [a, b] Exemple dans python interactif : >>> import random >>> random.random() 0.4364643628564109 >>> random.randint(1,10) 9 >>> random.randint(1,10) 2 UPMC – Licence 9 2V315 TD 2 Exercice – 9 Générer un nombre aléatoire dans l’intervalle [a, b[ (première utilisation de la fonction random() ) a- Écrire l’expression Python qui permet de générer un réel aléatoire compris entre 100 et 200 exclu, c’est-à-dire dans l’intervalle [100, 200[. b- Écrire l’expression Python qui permet de générer un entier aléatoire compris entre 1 et 6 inclus, c’est-à-dire dans l’intervalle [1, 6]. c- Lancer un terminal X, lancer l’interpréteur Python puis testez l’expression des questions a et b. Exercice – 10 Affectation et affichage a- Écrire l’algorithme d’un programme qui initialise deux variables correspondant à l’âge et à la taille d’un individu, respectivement 18 et 1,85. Le programme affichera le message suivant : age = 18 et taille = 1.85 b- Écrire un algorithme qui initialise trois variables correspondant à l’année en cours (2016), à l’année de naissance (2000) et à la taille d’un individu (1.40 m), puis qui affiche le message suivant : age = 16 et taille = 1.40 Exercice – 11 Réactualiser une expression Décrire la procédure à suivre pour résoudre le problème suivant : Soit une température donnée en degrés Celsius (◦C), la convertir en degrés Fahrenheit (◦ F) selon la formule : T f = 32 + T c × 1, 8 a- Quelles sont les variables nécessaires et leur type ? b- Écrire l’algorithme pour convertir 20 ◦C. c- Écrire les instructions Python (dans l’interpréteur) permettant de convertir 20 ◦C et affichant lisiblement le résultat. d- Rappeler et/ou modifier les commandes précédentes (flèches vers le haut et vers le bas), afin d’effectuer la conversion de 30 ◦C en ◦ F, puis afficher le résultat. Exercice – 12 Permuter le contenu de 2 variables a- Écrire un algorithme qui réalise l’échange en mémoire du contenu de deux variables A et B. Par exemple si les variables sont initialement A = 1,4 et B = 2,3, après exécution de l’algorithme on aura A = 2,3 et B = 1,4. UPMC – Licence 10 2016–2017 2V315 TD 2 b- Faire un tableau pour suivre l’évolution des valeurs des variables au cours de l’exécution pas à pas de l’algorithme. c- Écrire les instructions correspondantes en Python (dans l’interpréteur). Exercice – 13 Saisie de données utilisateur avec la fonction raw_input(), (premier programme) a- Utilisation de raw_input() dans l’environnement Python interactif : taper ces instructions et lire les affichages. >>> >>> >>> >>> a = raw_input("entrer une chaine de caractères : ") print a, type(a) b = raw_input("entrer un entier : ") print b, type(b) b- Écrire l’algorithme qui demande à l’utilisateur d’entrer une température en ◦C, qui la convertit en ◦ F et affiche le résultat. c- Traduire cet algorithme sous forme d’instructions en Python, que l’on stocke alors dans un fichier nommé exo13b.py, en utilisant l’éditeur gedit (pour rappel, taper gedit &, après avoir quitté l’environnement python interactif). Exécuter ce programme (python exo13b.py). Exercice – 14 Messages d’erreur Reprendre le code du programme exo13b.py, le sauvegarder sous exo14a.py, y effectuer tour à tour chacune des modifications suivantes (ne pas oublier d’enregistrer à chaque fois) et observer le message d’erreur obtenu (s’il y en a un). Si le programme s’exécute, observer son comportement. Attention : Après chaque modification, revenir à l’état initial. a- Supprimer la ligne qui permet la saisie de la valeur de température à convertir. b- Changer le nom d’une variable en modifiant uniquement la casse (majuscule / minuscule) d’un caractère. c- Modifier l’expression de calcul, par exemple : T f = 45 + T c × 1.8. d- Échanger les variables dans la ligne qui effectue le calcul de conversion (i.e. utiliser pour effectuer un calcul une variable qui n’est pas encore initialisée). e- Changer print en prinf. f- Supprimer un des guillemets dans la commande d’affichage du résultat. UPMC – Licence 11 2016–2017 TD – 3 Sélections et tests imbriqués, expressions booléennes Notions de cours Opérateurs de comparaison Les opérateurs de comparaison permettent de vérifier une relation d’ordre entre deux éléments de même type : vérifier s’il sont égaux, différents, plus grand ou plus petit l’un que l’autre. Pour cela on utilise des opérateurs différents en fonction du type : Opérateurs numériques et caractères Strictement inférieur < Inférieur ou égal <= Strictement supérieur > Supérieur ou égal >= égalité == différence != Opérateurs booléens ET logique OU logique Négation logique and or not Sélections conditionnelles Ces opérateurs de comparaison sont utilisés pour tester les valeurs prises par les variables lors de l’exécution du programme. Un test permet ainsi de faire une sélection conditionnelle. Sélection simple Début Déclarer nb_bonbons : entier Afficher « Combien reste-t-il de bonbons dans la boîte ? » nb_bonbons ← [CLAVIER] Vrai Faux nb_bonbons < 10 ? Afficher « Pensez à acheter des bonbons » Fin Voiçi le code python correspondant : UPMC – Licence 12 2V315 TD 3 nb_bonbons = raw_input("Combien reste-t-il de bonbons dans la boîte ?") nb_bonbons = int(nb_bonbons) if nb_bonbons < 10: print "Pensez à acheter des bonbons" Les instructions qui seront exécutées si le test est Vrai sont regroupés dans le bloc qui suit le if. Les instructions d’un bloc doivent être indentées, c’est-à-dire décalées vers la droite avec des espaces ou une tabulation et alignées verticalement. Attention : ne pas mélanger espaces et tabulations ! Sélection alternative Début Déclarer nb_bonbons : entier Afficher « Combien reste-t-il de bonbons dans la boîte ? » nb_bonbons ← [CLAVIER] Vrai nb_bonbons < 10 ? Afficher « Pensez à acheter des bonbons » Faux Afficher « Il y a encore assez de bonbons » Fin nb_bonbons = raw_input("Combien reste-t-il de bonbons dans la boîte ?") nb_bonbons = int(nb_bonbons) if nb_bonbons < 10: print "Pensez à acheter des bonbons" else : #le nombre de bonbons est supérieur ou égal à 10 print "Il y a encore assez de bonbons" UPMC – Licence 13 2016–2017 2V315 TD 3 Exercice – 15 Mise en route a- Lancer le terminal et exécuter python en mode interactif. b- Donner le résultat des tests qui suivent. Vérifier en tapant les instructions en ligne de commande. >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> pi = 3.14 A = False B = True 2 < 3 pi == 4 A == B True != False not A == B "A" < "B" 2 < 3 and 4 >= 10 2 < 3 or 4 >= 10 Exercice – 16 Un premier test a- Écrire l’algorithme d’un programme qui demande son âge à l’utilisateur et affiche « Vous pouvez entrer » si l’utilisateur a au moins 18 ans. b- Modifier l’algorithme pour que le programme affiche en plus « Vous ne pouvez pas entrer » si l’utilisateur a moins de 18 ans. c- Écrire le programme exo16b.py correspondant à l’algorithme de la question b ci-dessus. Exercice – 17 Devinette On a écrit deux petits programmes en Python, dont voici les scripts : nbsup4_1.py a=raw_input("Donnez un nombre : ") a=float(a) if a>4.0: print "le nombre est plus grand que 4" print "le nombre vaut",a ab— — c- nbsup4_2.py a=raw_input("Donnez un nombre : ") a=float(a) if a>4.0: print "le nombre est plus grand que 4" print "le nombre vaut",a Écrire les algorithmes correspondant à ces deux programmes. Prévoir ce qu’affiche chacun de ces programmes si l’utilisateur répond 2 à la question ; si l’utilisateur répond 8 à la question. Vous pouvez vérifier votre réponse en créant les deux programmes et en les exécutant. UPMC – Licence 14 2016–2017 2V315 TD 3 Exercice – 18 Somme ou produit de deux nombres a- Écrire l’algorithme d’un programme qui, en utilisant un test conditionnel : — demande deux nombres entiers à l’utilisateur ; — affiche le menu suivant : - pour somme taper s -- pour produit taper p - ; — demande à l’utilisateur quel est son choix ; — affiche la réponse correspondant à l’option choisie par l’utilisateur. b- Que se passerait-il si l’utilisateur entrait X comme choix ? c- Modifier l’algorithme en conséquence, en ajoutant une étape de vérification de la validité de la valeur entrée. d- Écrire le programme exo18c.py correspondant à l’algorithme de la question c. Exercice – 19 Résolution d’équations Soient a, b et c trois variables de type réel. a- Écrire l’algorithme d’un programme qui demande à l’utilisateur d’entrer les valeurs de a puis de b et qui affiche le résultat de l’équation a · x + b = 0. b- Écrire le programme exo19a.py correspondant. c- Écrire l’algorithme d’un programme qui demande à l’utilisateur d’entrer les valeurs de a, de b puis de c et qui affiche le résultat de l’équation a · x2 + b · x + c = 0 (on supposera que a est différent de 0). d- Écrire le programme exo19c.py correspondant. e- Idem qu’à la question c mais on supposera que a peut être égal à 0. UPMC – Licence 15 2016–2017 TD – 4 Répétition conditionnelle Notions de cours Structure de répétition conditionnelle ou boucle Il s’agit de répéter (exécuter plusieurs fois) une ou plusieurs instructions. La répétition est dite « conditionnelle » car c’est la valeur : vrai ou faux d’une expression booléenne qui conditionne l’entrée dans le corps de la boucle et donc l’exécution du bloc d’instructions correspondant. Afin de répéter une action ou une série d’instructions plusieurs fois, la boucle while peut être utilisée. Le principe est simple : la série d’instructions est répétée tant que la condition est vraie. Exemple 1 : Connaissant la surface actuelle d’un nénuphar et sachant que cette surface double tous les jours, on veut savoir quand le nénuphar déborde de sa mare et quelle est alors sa surface. Début Déclarer j, s_nenu, s_mare : entiers s_nenu ← 10 s_mare ← 200 j←0 Vrai s_nenu < s_mare ? s_nenu = 10 s_mare = 200 j = 0 while s_nenu < s_mare: s_nenu = s_nenu * 2 j = j + 1 print "Débordement jour", j print "Surface :", s_nenu Faux s_nenu ← s_nenu x 2 j←j+1 Afficher « Débordement jour », j Afficher « Surface : », s_nenu Fin Si l’on souhaite répéter des instuctions un nombre de fois défini à l’avance, on fait porter la condition sur la valeur d’une variable qui sert de compteur de tours. Cette variable est initialisée avant d’entrer dans la boucle et augmente de 1 à chaque tour de boucle. UPMC – Licence 16 2V315 TD 4 Exemple 2 : Afficher 10 fois "Bravo", puis une fois "Et encore bravo". Début Déclarer b : entiers b←0 Vrai b < 10 ? b = 0 while b < 10: print "Bravo" b = b + 1 print "Et encore bravo" Faux Afficher « Bravo » b←b+1 Afficher « Et encore bravo » Fin ou Début Déclarer b : entiers b←1 Vrai b 6 10 ? b = 1 while b <= 10: print "Bravo" b = b + 1 print "Et encore bravo" Faux Afficher « Bravo » b←b+1 Afficher « Et encore bravo » Fin NB : Ces deux programmes produisent le même résultat à l’affichage mais la valeur du compteur (la variable b) à la fin de l’exécution n’est pas la même : 10 dans le premier cas, 11 dans le second. Trois éléments sont nécessaires au bon fonctionnement de la boucle while : 1. initialiser au moins une variable avant d’entrer dans la boucle (dans l’exemple 1, la variable s_nenu est initialisée à 10 ; dans l’exemple 2, la variable b est initialisée à 0 ou 1). 2. faire tourner la boucle avec un test : on boucle tant que la condition est vraie (dans l’exemple 1, le test est s_nenu < s_mare ; dans l’exemple 2, le test est b < 10 ou b <= 10). 3. la variable du test doit être ré-affectée dans le corps de la boucle afin que la condition de sortie de boucle soit atteinte, faute de quoi la boucle tourne infiniment 1 (dans l’exemple 1, s_nenu est multipliée par 2 à chaque tour ; dans l’exemple 2, b augmente de 1 à chaque tour). 1. Si un programme (mal écrit) contient une boucle dont la condition d’arrêt n’est jamais atteinte, alors ce programme tourne indéfiniment. On peut stopper l’exécution d’un tel programme avec la combinaison de touches [Ctrl][C]. UPMC – Licence 17 2016–2017 2V315 TD 4 Exercice – 20 Mais que font ces programmes ? (exécution de répétition conditionnelle) Pour chacun des programmes suivants, écrire l’algorithme correspondant et prévoir ce qu’il affiche au moyen d’un tableau permettant de suivre l’évolution des variables au cours de l’exécution : a - bouclea.py b - boucleb.py i = 1 while i < 5: print "Bonjour numéro",i i = i + 1 i = 1 while i < 5: print "Bonjour numéro",i i = i + 1 c - bouclec.py d - boucled.py i = 1 while i < 5: i = i + 1 print "Bonjour numéro",i i = 1 while i < 5: i = i + 1 print "Bonjour numéro",i e - bouclee.py f - bouclef.py i = 5 while i > 0: print "Bonjour numéro",i i = i - 1 i = 5 while i < 5: print "Bonjour numéro",i i = i + 1 Exercice – 21 Le triangle de vagues (répétition conditionnelle et compteur) a- Écrire l’algorithme et le script python exo21a.py permettant de reproduire le dessin suivant dans votre fenêtre de terminal en utilisant une boucle conditionnelle. Rappel : les opérateurs + et * permettent respectivement de concaténer et répéter des chaînes de caractères. ~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~ ~~~~~ ~~~~ ~~~ ~~ ~ UPMC – Licence 18 2016–2017 2V315 TD 4 Exercice – 22 Jeux de dés (tirage aléatoire, répétition conditionnelle et test) On considère une partie de dé où on lance un dé de manière successive en notant les résultats des lancers. a- Écrire l’algorithme pour un jeu où on lance successivement le dé jusqu’à ce que l’on obtienne 6 en affichant le résultat de chaque lancer. b- Même question, mais cette fois-ci on affiche le nombre de lancers nécessaires pour obtenir 6. c- Même question, mais le jeu s’arrête lorsqu’on a obtenu deux 6. Écrire l’algorithme et le script exo22c.py. d- Même question mais on impose que les deux 6 soient successifs. Écrire l’algorithme et le script exo22d.py en modifiant l’algorithme et le script de la question c. Exercice – 23 Additions successives (Variable d’accumulation et répétition conditionnelle) a- Écrire l’algorithme d’un programme qui demande à l’utilisateur d’entrer successivement 5 nombres, puis affiche la somme de ces 5 nombres. b- Écrire l’algorithme d’un programme qui demande à l’utilisateur d’entrer un à un des nombres non nuls dont il calcule et affiche la somme au fur et à mesure et qui s’arrête dès que le nombre entré est nul. À la fin, le programme affiche le nombre de valeurs qui ont été sommées et la somme finale. c- Écrire le script python exo23a.py correspondant à la question a. d- Écrire le script python exo23b.py correspondant à la question b. Exercice – 24 Pour réviser ses tables de multiplications (tirage aléatoire et répétition conditionnelle) a- Écrire l’algorithme d’un programme qui génère deux nombres aléatoires entiers (chacun dans l’intervalle [1, 9]) puis qui les affiche. Le résultat de la multiplication des deux nombres est ensuite demandé à l’utilisateur. Tant que le résultat est faux la question est reposée. Quand la bonne valeur est donnée, le résultat est affiché avec un message de félicitations, avec le nombre de tentatives qui ont été nécessaire pour trouver le bon résultat. b- Écrire le script exo24a.py correspondant. (Rappel : il faut écrire la condition d’entrée dans la boucle pour répéter les actions inclues dans la boucle tant que la condition est vraie, c’est-à-dire : on boucle tant que la réponse est incorrect). c- Modifier l’algorithme pour qu’il affiche à chaque tour la fourchette dans laquelle le nombre se situe, au vu de l’ensemble des propositions précédentes. Le score final sera affiché comme précédemment. Écrivez le code exo40c.py correspondant. UPMC – Licence 19 2016–2017 2V315 TD 4 Exercice – 25 La tortue (complémentaire) Une tortue effectue 100 pas sur un chemin rectiligne. À chaque pas, elle avance d’une distance aléatoire d (en cm), avec 0 6 d < 5. a- Écrire l’algorithme qui affiche, pour chacun des 100 pas, le numéro du pas et la distance parcourue depuis le départ. b- Ajouter un message qui indique si la tortue a parcouru au moins 250 cm après avoir marché 100 pas. c- Écrire le programme exo25b.py correspondant à la question b. d- Modifier l’algorithme pour que la tortue s’arrête dès qu’elle a parcouru 250 cm, et afficher alors le nombre de pas qui ont été nécessaires. e- Écrire le programme exo25d.py correspondant à la question d. Exercice – 26 Le tir à l’arc (complémentaire) On veut simuler un jeu de tir à l’arc. Le tireur tire toujours dans une cible carrée de 1 m de côté. On considère que le tireur tire aléatoirement ses flèches dans la cible avec autant de chance d’atteindre chaque point de la cible. Si la flèche arrive à moins de 30 cm du centre, on marque 1 point. Si elle se plante à moins de 10 cm, on marque 4 points. a- Écrire l’algorithme, puis le programme exo26a.py, qui simule le tir de 10 flèches et annonce le total des points obtenus à la fin. Rappel 2 : la distance entre deux points A et B (théorème de Pythagore) est donnée par : d(A, B) = q (xA − xB )2 + (yA − yB )2 2. La fonction sqrt(x) de la bibliothèque math renvoie la racine carrée de x. UPMC – Licence 20 2016–2017 TD – 5 Listes, parcours d’une liste Notions de cours Listes Une liste est une variable contenant un ensemble ordonné de valeurs. Contrairement aux variables que l’on a vu jusqu’à présent les listes contiennent donc plusieurs valeurs. Ces valeurs sont indicées : chacune des valeurs possède un indice qui correspond à sa place dans la liste. Par conséquent on accède à une valeur donnée par son indice. Evidemment, deux valeurs de la liste ne peuvent pas avoir le même indice (la même place), par contre, une même valeur peut se retrouver à plusieurs indices (c-à-d. à plusieurs places dans la liste). Par convention, l’indice du premier élément est 0. Exemple 1 : La liste des 10 premiers nombres premiers est : [2,3,5,7,11,13,17,19,23,29]. Si cette série de valeurs est stockée dans la variable prems, alors prems[3] vaut 7, prems[9] vaut 29. Exemple 2 : Début t = [ 6, -2, 3, 9, 3, -4 ] print t[4] i = 3 print t[i] print t[i+2] print len(t) t.append(5) t[2] = 6 print len(t) print t Déclarer i : entier Déclarer t : liste d’entiers t ← [6, -2, 3, 9, 3, 4] Afficher t[4] i←3 Afficher t[i] Afficher t[i+2] Afficher longueur(t) L’exécution de ce code fait afficher : Ajouter 5 à t 3 9 -4 6 7 [6, -2, 6, 9, 3, -4, 5] t[2] ← 6 Afficher longueur(t) Afficher t Fin NB : Dans tous nos programmes, nous nous imposons une contrainte : tous les éléments d’une même liste sont de même type 1 . 1. De nombreux langages imposent cette contrainte. Ce n’est pas le cas de Python, mais nous éviterons de mélanger les types, car cela peut être source de confusions et d’erreurs. UPMC – Licence 21 2V315 TD 5 On peut utiliser un indice négatif pour compter à partir de la fin de la liste, dont l’indice est par convention -1. Ainsi, prems[-1] vaut 29, prems[-4] vaut 17. Extraction d’une sous-liste (slicing) L’instruction Nom_liste[a:b] renvoie une liste de taille (b − a) composée des éléments de Nom_liste d’indices a à (b − 1) inclus. Par exemple, prems[2:5] est la liste [5,7,11]. Si la borne inférieure est absente, la sous-liste commence au premier élément : prems[:3] vaut [2,3,5] ; si la borne supérieure est absente, la sous-liste finit au dernier élément : prems[8:] vaut [23,29]. Parcours d’une liste On peut parcourir une liste de deux façons différentes : Incrémentation d’indice Un nombre entier est utilisé comme indice et une boucle permet de lui faire prendre successivement toutes les valeurs nécessaires pour parcourir le tableau. Début Déclarer i, L : entiers voyelles = [’a’,’e’,’i’,’o’,’u’] L = len(voyelles) i = 0 while i < L : print voyelles[i] i = i + 1 Déclarer voyelles : liste de caractères voyelles ← [’a’,’e’,’i’,’o’,’u’] L ← longueur(voyelles) i←0 Vrai i < L? L’exécution de ce code fait afficher : Faux a e i o u Afficher voyelles[i] i←i+1 Fin UPMC – Licence 22 2016–2017 2V315 TD 5 Itération Une variable du même type que les éléments du tableau prend successivement toutes les valeurs contenues dans le tableau. Début voyelles = [’a’,’e’,’i’,’o’,’u’] for lettre in voyelles : print lettre Déclarer lettre : caractère Déclarer voyelles : liste de caractères L’exécution de ce code fait afficher a : voyelles ← [’a’,’e’,’i’,’o’,’u’] Vrai pour lettre dans voyelles a e i o u Faux Afficher lettre a. Une instruction print terminée par une virgule ne va pas à la ligne après impression. Ainsi, avec « print lettre, » on obtient : a e i o u Fin Cette seconde écriture est plus concise mais moins souple. Par exemple, elle ne permet pas de parcourir le tableau à l’envers, ou en ne considérant qu’un élément sur deux, etc. UPMC – Licence 23 2016–2017 2V315 TD 5 Exercice – 27 Tranches de listes Initialiser une variable de type liste avec la série de valeurs suivante : 3 1 5 0 8 6 9 4 2 5 7 8 a- Extraire par slicing les 5 premiers éléments de cette liste et afficher le contenu de la sous-liste à l’aide d’une boucle à indice « Tant que... ». Écrire l’algorithme et le code Python exo27a.py. b- De même, extraire les 3 derniers éléments de la liste (l’algorithme doit fonctionner quelque soit la longueur de la liste) et les afficher par itération « Pour... ». Écrire l’algorithme et le code Python exo27b.py. c- idem pour la sous-liste allant du 4e au 8e élément (inclus) et affichage avec les deux types de parcours. Écrire l’algorithme et le code Python exo27c.py. Exercice – 28 Listes d’entiers et répétitions Écrire les algorithmes et les codes permettant de générer les listes de valeurs suivantes au moyen de boucles « Tant que... » et de la méthode « Ajouter » (on peut vérifier le résultat en affichant le contenu de chaque liste au moyen d’une boucle « Pour... ») : abcdef- 5555555555 0123456789 20 21 22 23 24 25 26 27 28 29 30 10 9 8 7 6 5 4 3 2 1 0 1 2 4 8 16 32 64 128 256 512 1024 1 1 2 3 5 8 13 21 34 55 Exercice – 29 Musique aléatoire Dans la notation anglo-saxonne, les notes de musique sont nommées par des lettres qui vont de A (la) à G (sol). a- Écrire l’algorithme et le code exo29a.py d’un programme qui compose une mélodie aléatoire de 20 notes, en choisissant au hasard les notes dans une liste qu’on aura préalablement initialisée. La mélodie est stockée sous forme d’une liste, qu’on affiche à l’aide d’une boucle « Pour... ». b- Compléter l’algorithme pour qu’il demande à l’utilisateur de choisir une note (donc une lettre) et affiche combien de fois cette note est utilisée dans la mélodie. Écrire le code exo29b.py correspondant. UPMC – Licence 24 2016–2017 2V315 TD 5 Exercice – 30 Climat Le tableau ci-dessous donne la température (en degrés Celsius) enregistrée au mois de mars à Reykjavik (Islande) sur la période 1951-1960 : Année Temp. 1951 -3,9 1952 2,4 1953 -3,6 1954 -13,7 1955 4,5 1956 0,8 1957 5,3 1958 -1,9 1959 3,7 1960 -7,8 a- Écrire l’algorithme permettant de calculer et afficher la température moyenne sur la période considérée. b- Écrire l’algorithme permettant de trouver et afficher la température la plus élevée et l’année de son enregistrement. c- Écrire l’algorithme qui donne la liste des années où la température a été inférieure à la moyenne, puis le nombre de ces années. d- Écrire les programmes exo30a.py, exo30b.py et exo30c.py correspondant aux algorithmes des questions a, b et c. Exercice – 31 Listes d’entiers et récursion (complémentaire) Dans la liste de la dernière question de l’exercice 28, chaque élément doit être calculé à partir des deux précédents (sauf, évidemment, les deux premiers). D’une façon générale, quand on crée ainsi un élément d’une liste à partir d’un (ou plusieurs) élément(s) pré-existant(s), on dit que la liste est générée par récursion. Toute liste générée par itération peut également être générée par récursion (l’inverse n’est pas vrai). a- Écrire les algorithmes et les codes Python permettant de générer par récursion toutes les listes de l’exercice 28. Exercice – 32 Liste aléatoire et algorithme de rangement (complémentaire) a- Écrire l’algorithme et le code exo32a.py d’un programme qui génère une liste de 10 nombres entiers aléatoires compris entre -20 et 20 (bornes comprises), puis affiche cette liste. b- On veut maintenant, dans cette liste, séparer les éléments selon leur signe : tous les nombres négatifs au début de la liste, suivis de tous les nombres positifs. Par exemple, si la liste générée aléatoirement est [6, 14, -9, 3, -13, -4, 7, 18, -12, 1], on peut obtenir [-12, -4, -9, -13, 3, 14, 7, 18, 6, 1]. Écrire l’algorithme et le code exo32b.py correspondants. NB : Il ne faut pas créer une seconde liste, mais effectuer le rangement « en place » dans la liste initiale ; on ne se soucie pas de respecter l’ordre initial des nombres, seule compte la séparation entre négatifs et positifs. UPMC – Licence 25 2016–2017 TD – 6 Chaînes de caractères et répétitions Notions de cours Chaîne de caractères Les chaînes de caractères peuvent être considérées comme des listes non modifiables composées uniquement de variables de type caractères. Une fois la chaîne définie, les caractères qui la composent ne peuvent pas être modifiés. Caractères spéciaux Caractère \n \t \’ \" Signification saut de ligne tabulation apostrophe (single quote), ne ferme pas la chaîne de caractères guillemet (double quote), ne ferme pas la chaîne de caractères Opérations sur les chaînes de caractères Opérateurs + * >, < Description concaténation mutliplication comparaison selon l’ordre alphabétique De plus, la fonction len() donne la longueur de la chaîne. Méthodes applicables aux chaînes de caractères Rappel : en Python, on appelle méthode toute fonction associée exclusivement à un type de variable et dont l’usage est définit par la syntaxe Nom_variable.Nom_méthode(). Méthodes split() upper() lower() UPMC – Licence Description Découpe la chaîne en sous-chaînes Transforme les caractères en majuscule Transforme les caractères en minuscule 26 2V315 TD 6 Exercice – 33 Manipulation de chaîne de caractères a- Tapez les instructions suivantes : >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> proust = "Gilberte Albertine" proust[0:8] proust[9:] proust[9:-3] proust[0:7] + " et " + proust[9:-3] proust * 3 proust[17] = "a" proust.append("!") "bert" in proust "Marcel" in proust len(proust) proust.upper() proust.lower() proust.split() proust = "Gilberte\tAlbertine" print proust proust.split() proust.split("\t") proust.split("e") prenoms=proust.split("\t") print prenoms prenoms[0]<prenoms[1] b- D’après les résultats obtenus, que peut-on faire ou ne pas faire avec les chaînes de caractères ? Exercice – 34 Recherche d’un élément a- Écrire l’algorithme et le code exo34a.py d’un programme qui compte le nombre d’occurrences d’une lettre dans un mot. Le programme demandera d’abord à l’utilisateur d’entrer un mot, puis d’entrer la lettre à rechercher. Le programme devra parcourir le mot à la recherche de la lettre et compter son nombre d’occurrences. b- Adapter le programme pour qu’il compte le nombre d’occurrences d’un mot dans une phrase. Écrire l’algorithme et le code exo34b.py. Exercice – 35 Ordre alphabétique a- Écrire l’algorithme et le code exo35a.py d’un programme qui demande à l’utilisateur une série de mots (séparés par des espaces) et dit si les mots sont dans l’ordre alphabétique. Le programme ne doit pas tenir compte des minuscules et majuscules. b- Modifier l’algorithme et le code pour que le programme distingue trois cas : (1) ordre alphabétique, (2) ordre alphabétique inversé, (3) ni l’un ni l’autre. UPMC – Licence 27 2016–2017 2V315 TD 6 Exercice – 36 Anagrammes (complémentaires) a- Écrire un programme exo36a.py qui demande deux mots à l’utilisateur et détermine s’il s’agit d’anagrammes ou non. b- Même question mais sans compter plusieurs fois les mêmes lettres, écrire le programme exo36b.py. c- Écrire un programme exo36c.py qui demande un mot au joueur et propose tous les anagrammes de ce mot. Exercice – 37 Jeu de mots (complémentaires) Écrire un programme exo37a.py qui : demande un mot de six lettres minimum à un premier joueur ; mélange les lettres de ce mot pour en faire un anagramme ; demande à un deuxième joueur de retrouver le mot proposé par le 1er à partir de l’anagramme. Le jeu s’arrête lorsque le 2e joueur a trouvé. b- Modifier ce programme exo37b.py pour que le mélange soit fait par tranches de 2 lettres. a— — — UPMC – Licence 28 2016–2017 TD – 7 Expressions booléennes complexes Notions de cours Expressions booléennes Les expressions booléennes sont construites en utilisant les opérateurs suivants : — Opérateurs de comparaison <, ≤, >, ≥, 6=, = (en python <, <=, >, >=, !=, ==) — Opérateurs booléens ET, OU, NON (en python and, or, not) Tables de vérité Un opérateur booléen combine deux valeurs booléennes pour produire une valeur booléenne. A B F F F V V F V V NON A V V F F A ET B F F F V A OU B F V V V Expressions complexes On peut construire des expressions booléennes complexes en combinant des variables, des opérateurs et des parenthèses. Par exemple, définissons les expressions P et Q : P ⇔ A ET (B OU NON C) Q ⇔ NON (A OU B) ET (A OU NON C) Si A est Vrai, B et C sont Faux, alors P est Vrai et Q est Faux. Expressions équivalentes Les règles d’arithmétique booléenne permettent de modifier une expression sans changer sa valeur de vérité. On utilise généralement ces transformations pour simplifier une expression. Distributivité : A ET (B OU C) ⇔ (A ET B) OU (A ET C) A OU (B ET C) ⇔ (A OU B) ET (A OU C) Règles de Morgan : NON (A ET B) ⇔ NON A OU NON B NON (A OU B) ⇔ NON A ET NON B UPMC – Licence 29 2V315 TD 7 Exercice – 38 Les booléens et les opérations sur les ensembles On examine ici les rapports entre les booléens et les opérations sur les ensembles (union, intersection, complémentaire). On dispose de trois ensembles A, B et C, et on considère les propositions suivantes : — a = « le point appartient à l’ensemble A » — b = « le point appartient à l’ensemble B » — c = « le point appartient à l’ensemble C » Figure 7.1 – Ensembles a- Déterminer pour chacun des diagrammes de la Figure 7.1 une expression booléenne (construite à partir des propositions a, b et c) permettant de caractériser les points noirs. b- Écrire de même une expression booléenne qui caractérise les points gris dans chaque cas. Exercice – 39 Sélections alternatives et imbriquées - Les années bissextiles Pour vérifier si une année est bissextile, il faut appliquer les règles suivantes : — Les années divisibles par 4 sont bissextiles, — Exception : les années divisibles par 100 ne sont pas bissextiles, — Exception à l’exception : les années divisibles par 400 sont bissextiles. Ainsi, les règles précédentes permettent de déterminer que : 400, 2000, 2008 et 2012 sont des années bissextiles 100, 1900, 2011 ne sont pas des années bissextiles a- Concevoir un algorithme qui demande une année à l’utilisateur et affiche si l’année est ou non bissextile. On écrira d’abord un algorithme qui applique la première règle, puis on ajoutera la seconde, etc. b- Construire l’expression booléenne complexe qui est vrai si et seulement si l’année est bissextile. c- Concevoir un autre algorithme avec seulement une sélection et son alternative. d- Écrire le code Python exo39a.py correspondant à la question a (une fois toutes les hypothèses ajoutées) et exo39c.py correspondant à la question c. UPMC – Licence 30 2016–2017 2V315 TD 7 Exercice – 40 Nombre secret a- Construire un algorithme qui permette de jouer à « plus grand, plus petit » : l’ordinateur choisit en secret un nombre entier aléatoire compris entre 1 et 1000. À chaque tour, le joueur fait une proposition à laquelle le programme répond par « trop grand » ou « trop petit ». Le jeu se poursuit jusqu’à ce que le nombre secret soit découvert. Écrivez le code exo40a.py correspondant. b- Modifier l’algorithme précédent afin que le nombre de tours pour découvrir le nombre secret soit limité à dix. Le programme affichera le score final, 10 si trouvé dès le premier tour, 1 si trouvé au dixième tour, 0 si le nombre secret n’a pas été découvert au bout de dix tours. Écrivez le code exo40b.py correspondant. Exercice – 41 Débuts et fins de traduction Récupérez le fichier seqarn.txt disponible sur le site sakaï de l’UE. Ce fichier contient une séquence d’ARN que vous utiliserez pour cette exercice. a- Écrivez un algorithme qui permettent d’afficher la position dans cette séquence de tous les codons initiateur (AUG) et de tous les stop (UAG,UAA et UGA) quelque soit leur phase dans le sens direct. b- Écrire le code exo41a.py correspondant. c- Écrivez un algorithme qui permettent d’afficher la position de tous les codons starts (AUG) et de tous les stop (UAG,UAA et UGA) quelque soit leur phase dans le sens inverse (position de la première base du codon). d- Écrire le code exo41c.py correspondant. Exercice – 42 Débuts et fins de traduction (complémentaires) a- Afficher la position de tous les codons starts (AUG) et de tous les stop (UAG,UAA et UGA) quelque soit leur phase dans les deux sens. b- Afficher tous les codons répétés 2 fois consécutivement, quelque soit leur phase (ou leur sens). c- Trouver à partir de la première base le premier codon start puis le premier codon stop en phase, puis recommencer l’opération à partir de la première base suivant le stop, et ainsi de suite. Exercice – 43 Jeu de plate-forme (complémentaire) a- Écrire un programme exo43a.py qui simule un jeu de voiture. Le but du jeu est de gagner 100 points en moins de 10 coups. À chaque coup, le joueur Mario, avec sa voiture, a le choix entre trois actions possibles : UPMC – Licence 31 2016–2017 2V315 TD 7 — avancer tout droit (’a’) et gagner 10 points — utiliser son propulseur pour sauter (’o’), et tenter de gagner 70 points, ou risquer de perdre 70 points, avec une probabilité égale (50/50) — réparer sa voiture (’r’), sans gagner ni perdre de points La voiture se dégrade un peu plus à chaque coup et la probabilité qu’elle tombe en panne augmente de 0.1. La probabilité retombe à zéro quand elle est réparée. Si la voiture tombe en panne, la partie est terminée. UPMC – Licence 32 2016–2017 Annexes Utilisation de l’éditeur de texte gedit 1. Contrairement aux logiciels de traitement de texte les éditeurs de texte ne permettent aucun « formatage » tel que gras, italique, « taille des caractères », etc. 2. Un éditeur de texte ne traite et ne sauve que des caractères ASCII (cf. cours) et le code ASCII ne permet pas de représenter les attributs des caractères. 3. La barre d’état (en bas de la fenêtre) indique la nature du fichier texte (texte brut, fichier source écrit dans un langage de programmation), la largeur des tabulations (8 par défaut) et la position du curseur (ligne et colonne). Si elle n’est pas affichée, la faire apparaître (menu Affichage). 4. La barre d’outil permet d’effectuer des actions courantes en cliquant sur des icônes (création, ouverture, sauvegarde de fichiers, annulation de frappe, « copier », « coller », « rechercher », « rechercher et remplacer ». Si elle n’est pas affichée, la faire apparaître (menu Affichage). 5. Dans le menu Edition/Préférences/Affichage modifier les paramètres suivants (et les sauver) pour faciliter l’écriture en langage de programmation : — Désactiver le retour à la ligne — Activer l’affichage des numéros de lignes UPMC – Licence 33 6. Lorsque vous enregistrez (ou ouvrez) un fichier avec une extension associée à un langage de programmation (.py, .c, .java), gedit reconnait applique la coloration syntaxique associée au langage UPMC – Licence 34 Ordinogrammes et code Python N.B. Dans ce qui suit, le terme « instr. » représente une instruction, ou plusieurs instructions en séquence, ou un bloc (sélection, répétition). Structure générale d’un programme Début Déclarer identifiant : type ... # -*- coding: utf-8 -*... instr. ... instr. Fin Affichage Afficher identifiant print identifiant print "texte", identifiant Afficher « texte » identifiant Affectation identifiant ← expression identifiant = expression Afficher question identifiant = raw_input(question) identifiant ← [CLAVIER] Sélection 1 instructions... Vrai condition ? Faux instructions... if condition : instr. si Vrai instructions... instr. si Vrai instructions... UPMC – Licence 35 Sélection 2 instructions... Vrai condition ? instr. si Vrai instructions... if condition : instr. si Vrai else : instr. si Faux instructions... Faux instr. si Faux instructions... Répétition instructions... Vrai condition ? Faux instructions... while condition : instr. tant que Vrai instructions... instr. tant que Vrai instructions... Itération instructions... Vrai pour elt dans liste Faux instructions... for elt in liste : instr. avec elt instructions... instr. avec elt instructions... UPMC – Licence 36 Utilisation de sakai sakai est la plateforme d’enseignement de l’UPMC. En vous connectant, après vous être identifié, vous verrez apparaître sous forme d’onglets l’ensemble des cours auxquels vous êtes inscrit, en tant qu’enseignant ou en tant qu’étudiant. L’onglet 2V315 vous permet d’accéder à votre répertoire dédié. Vous pourrez y enregistrer les programmes créés en séance de TD et les recupérer depuis l’extérieur. Pour accéder au portail sakai, lancer un navigateur web et taper l’URL suivante : http://australe.upmc.fr/portal 1. Se Connecter avec votre identifiant et mot de passe utilisés pour le service courriel de l’UPMC. 2. Sélectionner l’onglet Mon espace de travail (à gauche), puis l’option Ressources sur la barre de menu à gauche. UPMC – Licence 37 3. Cliquer sur bouton Ajouter à côté du répertoire My Workspace, puis sélectionner Déposer fichier(s). 4. Choisir le fichier à déposer sur sakai (possibilité d’en déposer plusieurs en cliquant sur Ajouter un autre fichier). 5. Pour télécharger le(s) fichier(s), cliquer sur Déposer les fichiers. UPMC – Licence 38