TP1 INITIATION À PYTHON ET À LA PROGRAMMATION (1) Objectifs du TP Les buts de TP sont : prise en main du mode CLI pour Interface en Ligne de Commande ; révision des opérations élémentaires et manipulations de nombres, de chaînes de caractères et de listes ; introduction aux variables, à leurs types et aux affectations, changements de types ; prise en main de Spyder; utilisation des instructions conditionnelles if/elif/else. 1 Python comme super calculatrice Lancer l interpréteur Python; pour cela ouvrir le dossier WinPython et lancer IPython Qt Console. Une console Windows s ouvre et une fenêtre de l interpréteur Python. Exercice 1 Opérations élémentaires 1. D après vos souvenirs de cours, remplir uniquement la première colonne vide du tableau suivant. Opérateur Effet (d après vos souvenirs) Correction + - * / // % ** 2. Exécuter les commandes suivantes : 1 2+52 2 2*3 3 2**3 4 153/ 10 5 153//10 6 153% 10 7 2*52-15+3 8 2*52 -(15+3) 9 12+2. 10 12+2 s Python applique les mêmes priorités de calcul que dans les Mathématiques apprises en collège : les parenthèses peuvent être essentielles. (lignes 7 et 8) L opérateur «/» renvoie toujours un float. (ligne 4) 3. Corriger éventuellement le tableau à la lueur des commandes tapées (et éventuellement d autres commandes que vous taperez pour vérifier vos corrections). 4. Expliquer les dernières commandes : quelle(s) différence(s) voyez-vous? à quoi sont-elles dues? En déduire une règle générale sur le fonctionnement de Python. Python permet de faire des calculs basiques avec les opérateurs courants : somme/soustraction, multiplication/division, puissance, division euclidienne etc.
2 Variables et types On continue à travailler dans la console. Exercice 2 Nombres Exécuter les commandes suivantes. 1 a=3 2 a 3 type (a) 1. Quelle est la différence entre les variables a et alpha? 4 alpha = float (a) 2. Quel est le type de c? Comment l expliquez-vous? 5 type ( alpha ) 3. Quel est le type de gamma? 6 b=a/7 7 c =14* b 4. Comment pourrait-on trouver la variable gamma en un nombre flottant? 8 gamma = int (c) Python n affiche pas la valeur de la variable lorsqu on la définit (lignes 1, 4 etc). Pour connaître la valeur d une variable, il faut demander à Python de l afficher en tapant le nom de la variable (ligne 2). Exercice 3 Chaînes de caractères (1) Exécuter les commandes suivantes. 1 msg =" bonjour " 1. Quel est le type de la variable msg? Comment vérifie-t-on cela? 2 msg2 ='tout le monde ' 2. Que réalise l opérateur + sur les chaînes de caractères? 3 msg + msg2 3. Pourquoi la commande de ligne 3 affiche-t-elle quelque chose? 4 3 msg =" coucou " 4. Expliquer la commande de la ligne 4 ; que se passe-t-il? Il y a des règles pour choisir le nom des variables : choisir des noms cohérents ; les variables mot, Mot et MOT sont différentes : Python distingue les lettres majuscules et les minuscules; les noms de variables sont constituées de lettres, de chiffres et de l underscore «_» ; la ponctuation, les caractères spéciaux, les accents et la cédille ne sont pas autorisés. On définit une variable en donnant directement son nom et sa valeur ; chaque variable a un type. Pour l instant nous avons rencontré les entiers int, les réels ou nombres flottants float et les chaînes de caractères str pour string. Il existe certaines règles impératives et des règles tacites pour choisir le nom des variables. On demande à Python le type d une variable à l aide de la fonction type(...); la réponse est alors de la forme <class nomdutype >. Pour changer le type d une variable, il suffit d utiliser le nom du type souhaité. Exercice 4 Chaînes de caractères (2) Pour délimiter une chaîne de caractères, on peut opter parmi quatre possibilités : une paire de guillemets "... ", une paire d apostrophes..., une paire de triplets de guillemets """... """ ou une paire de triplets d apostrophes.... 1. Créer une variable dial1 contenant la chaîne de caractères «il dit : "bonjour"». 2. Créer une variable dial2 contenant la chaîne de caractères «il l observe». 3. Créer une variable dial3 contenant la chaîne de caractères «, lui répond "bonjour" et s en va.». Exercice 5 Chaînes de caractères (3) 1 msg1 =" Mon nom est Bond." 2 msg2 =' James Bond.' 3 print (msg1, msg2 ) 4 replique = msg1 + msg2 5 replique Exécuter les commandes suivantes. 6 type ( replique ) 7 len ( replique ) 8 replique [0] 9 replique [ 29] 10 replique [ 15] 11 replique [ -1] 12 replique [ -29] 13 replique [ -10] 14 replique [15:29:3] 15 replique [ 10] Sommaire -2- A.LAURENT Lycée Descartes
3 AFFECTATION 1. Que fait la fonction len? 2. Que fait la fonction print? 3. En regardant les lignes 6 à 10, expliquer comment on peut isoler un caractère d une chaîne? comment choisir le nombre à mettre dans les crochets? 4. Proposer une seconde approche pour isoler un certain caractère d une chaîne en considérant les instructions 11 à 13. 5. En changeant les valeurs, comprendre ce que fait l instruction de la ligne 14. 6. Sans taper d instruction supplémentaire, préciser le type de replique[-10]. Justifier. Un string est constitué de caractères. On peut accéder aux différents caractères en mettant entre crochet l indice du caractère qu on souhaite obtenir. Le nombre de caractères d un string est obtenu par la fonction len(...) pour length. La fonction print permet d afficher un message à l écran. 3 Affectation Exercice 6 Affectation (1) On considère les instructions suivantes : 1 a,b=5,2 2 a=a+1 3 b=a+1 4 b +=1 5 a,b=b,a 6 a=b 1. Sans avoir tapé les instructions, remplir les deux premières colonnes du tableau suivant avec les valeurs prises par a et b. 1 2 3 4 5 6 Avant correction Après correction a b a b 2. Vérifier votre tableau en tapant les commandes et corriger éventuellement le tableau. 3. Par quoi aurait-on pu remplacer la ligne 4 pour avoir le même effet? 4. Quelle est l effet de l instruction a,b=b,a? Par quelles instructions aurait-on pu remplacer cette instruction? Tester votre réponse. Exercice 7 Affectation (2) On exécute la commande b=0. Quels sont les effets des instructions successives b+=5? b*=2? b-=1? b/=2? Comment aurait-on pu taper ses instructions autrement? A.LAURENT Lycée Descartes -3- Sommaire
4 Hello the world En informatique, Hello world est souvent le premier programme que l on tape lorsque l on apprend un nouveau langage de programmation : il s agit de faire dire «bonjour» par la machine. Lancer Spyder, ouvrir et enregistrer un nouveau fichier «helloworld.py» dans un répertoire de travail sur une clé USB (donner un nom cohérent au répertoire comme TP1). A présent tous les exercices seront faits dans un fichier en «.py». Exercice 8 1. Écrire des lignes de codes pour que le programme affiche «bonjour» puis, dans un second temps, affiche «au revoir». Tester. Avant d exécuter un fichier pour la première fois, on peut régler les options d exécution. Pour cela, il suffit de faire [F6] (mais on peut aussi utiliser les menus ou les raccourcis). Les options conseillées sont : «Exécuter dans un terminal système externe» ; «Interagir avec la console Python après l exécution» ; «Afficher un avertissement à l interruption d un processus». La deuxième option permet de laisser le terminal ouvert après l exécution du fichier pour éventuellement exécuter des instructions supplémentaires. Pour fermer cette fenêtre, tu pourras utiliser le raccourcis clavier «Ctrl+D». Pour exécuter un fichier, on peut utiliser le menu «Exécution/Exécution», le raccourcis dans la barre du haut mais on utilisera la touche [F5] pour gagner en efficacité. 2. Modifier le programme pour qu entre le «bonjour» et l «au revoir», il demande si l utilisateur est une femme ou un garçon que l on désignera par F et G. La réponse donnée sera stockée dans une variable au nom intelligemment choisi. Syntaxe La fonction input(...) prend en entrée optionnelle une chaîne de caractères. Elle affichera cette chaîne à l écran et attendra que l utilisateur tape et valide quelque chose au clavier. La sortie de cette fonction est toujours une chaîne de caractère. Selon, cette chaîne pourra ensuite être transformée en un autre type. 3. Modifier le programme pour qu au lieu d afficher simplement «au revoir», le programme affiche «au revoir jeune homme» ou «au revoir jeune femme» selon la réponse à la question précédente. Syntaxe La syntaxe d une instruction conditionnelle est la suivante : if ( exp booleenne 1) : instructions 1... elif ( exp booleenne 2) : instructions 2... else : instructions 3... suite des instructions... exécutée... dans tout les cas... le elif (contraction de "else if", autrement si) et le else sont optionnels ; il peut y avoir plusieurs elif; si l expression booléenne 1 donne True, le bloc d instructions 1 est réalisé. Sinon et si l expression booléenne 2 donne True, le bloc d instructions 2 est réalisé. Dans tout les autres cas, le troisième bloc d instructions est exécuté. Ici on utilisera un test d égalité sur les chaînes de caractères de la forme «if...== F». (a) Dans un premier temps, on utilisera simplement if/else : une réponse G sera correctement comprise, n importe quelle autre réponse correspondra à F. (b) Puis on modifiera en utilisant if/elif/else de manière à ce qu un message d erreur s écrive en cas de réponse incorrecte. Sommaire -4- A.LAURENT Lycée Descartes
5 EXERCICES SUPPLÉMENTAIRES 4. Faire de même pour que l âge soit demandé et modifier le programme pour qu il écrive : «tu es trop jeune» si l âge donné est en dessous de 14 ans. On impose que le test soit fait sur des entiers. 5. Modifier le programme pour qu il demande le nom de l utilisateur puis pour qu il affiche le prénom dans les questions et dans le message final. Ex : le programme affichera «Bonjour James, quel est ton age?» Attention Les instructions d entrée/sortie input et print sont utiles, ludiques et interactives pour débuter. Néanmoins, il ne faut pas en abuser. Il est plus simple de rentrer les paramètres dans un fichier que de les demander à l utilisateur : en pratique, on n utilise pas du tout input et très peu print. 5 Exercices supplémentaires Exercice 9 Année bissextile ou non Une année bissextile est une année comptant 366 jours au lieu de 365 i.e. une année comprenant un 29 février. Depuis l ajustement du calendrier grégorien, sont bissextiles les années : soit divisibles par 4 mais pas par 100; soit divisibles par 400. 1. Les années 1900, 2000, 2008 et 2014 étaient-elles bissextiles? 2. Écrire un programme qui demande a l utilisateur d entrer une année et qui renvoie True si cette année est bissextile et False sinon. Exercice 10 Tri Écrire un programme qui demande a l utilisateur d entrer une liste de trois nombres et qui es affiche triées dans l ordre croissant. Exercice 11 Conversion de durée 1. Écrire un programme demandant le nombre d heures, de minutes et de secondes et retourne la même durée en secondes. Deux programmes sont demandés : Ex : en répondant la chaîne de caractères «"01h41mn1s"», le programme doit afficher «6061s». (a) le premier pose trois questions (une pour le nombre d heures, une pour les minutes et une pour les secondes) et affiche la durée en secondes ; (b) le second ne pose qu une seule question, demande en réponse une chaîne de caractères de la forme «"..h..mn..s"» et affiche la durée en seconde. 2. Écrire un programme demandant un nombre entier de secondes et qui retourne le nombre d heures, de minutes et de secondes correspondant. Ex : en répondant «6061s», le programme doit afficher la chaîne de caractères «"01h41mn1s"». Exercice 12 Somme de nombres Écrire un programme qui calcule la somme de tous les nombres à au plus 5 chiffres qui n ont que des chiffres pairs dans leurs écritures décimales. A.LAURENT Lycée Descartes -5- Sommaire