Apprentissage de la Programmation avec Python TP1



Documents pareils
TP 1. Prise en main du langage Python

Initiation à la programmation en Python

Chapitre 2 Devine mon nombre!

Présentation du langage et premières fonctions

STAGE IREM 0- Premiers pas en Python

L informatique en BCPST

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Découverte de Python

Algorithmique et Programmation, IMA

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Introduction à MATLAB R

Programmation Web. Madalina Croitoru IUT Montpellier

Le langage C. Séance n 4

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

TP1 - Prise en main de l environnement Unix.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Premier cours d informatique

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Algorithmique et programmation : les bases (VBA) Corrigé

Lorsque vous êtes sur le portail de l E.N.T., il y a parmi les onglets un qui s intitule «Devoirs Maison Serveurs»

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Progression secrétariat

Corrigé des TD 1 à 5

Mon aide mémoire traitement de texte (Microsoft Word)

I00 Éléments d architecture

Langage Java. Classe de première SI

Cours d algorithmique pour la classe de 2nde

1 Recherche en table par balayage

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Utilisation d objets : String et ArrayList

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information


KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Initiation à Excel. Frédéric Gava (MCF)

Recherche dans un tableau

Guide de correction et d optimisation des images en vue de leur publication sous Marcomedia Contribute. Logiciel utilisé : Adobe PhotoShop 7

TRIGONOMETRIE Algorithme : mesure principale

Manuel d utilisation NETexcom

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Mode d emploi du Bureau Virtuel (BV) à destination des étudiants en Formation À Distance (FAD)

Navigation dans Windows

Notions fondamentales du langage C# Version 1.0

TP 1 Prise en main de l environnement Unix

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Les structures. Chapitre 3

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Environnements informatiques

TP JAVASCRIPT OMI4 TP5 SRC

ALGORITHMIQUE ET PROGRAMMATION En C

Poker. A rendre pour le 25 avril

Paginer les données côté serveur, mettre en cache côté client

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

La saisie d un texte

MODE D EMPLOI DU MODULE D E-COMMERCE

MANUEL UTILISATEUR. ADELYAMIN Version V1.0

Manuel de mise en page de l intérieur de votre ouvrage

Programmation en Java IUT GEII (MC-II1) 1

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

Représentation d un entier en base b

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Chapitre 4 Pierre, papier, ciseaux

Comment formater votre ebook avec Open Office

FICHIERS ET DOSSIERS

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Sélection du contrôleur

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Contrôle Parental Numericable. Guide d installation et d utilisation

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Guide d utilisation 2012

Comment accéder à d Internet Explorer

Bernard Lecomte. Débuter avec HTML

I. Introduction aux fonctions : les fonctions standards

Programmation C. Apprendre à développer des programmes simples dans le langage C

INF 321 : mémento de la syntaxe de Java

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

à l édition de textes

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

PARAGON - Sauvegarde système

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

À propos de votre liseuse... 5

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Systèmes informatiques

Programmer en JAVA. par Tama

Securexam pour le programme CPA,CGA

Introduction à l algorithmique et à la programmation M1102 CM n 3

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

UE Programmation Impérative Licence 2ème Année

Transcription:

IGI-3008 ESIEE Paris 2015-2016 Apprentissage de la Programmation avec Python TP1 Jean-Claude GEORGES Avant de commencer, quelques indications sur le travail qui sera à faire durant toute l unité : Pour chaque TP, rédigez un compte-rendu. Les comptes-rendus seront exigibles immédiatement en cas de litige après vos évaluations. Vous pouvez me les envoyer par mail ( jean-claude.georges@esiee.fr ) si vous avez des doutes ou interrogations. Il sera alors annoté (mais non noté). Utilisez un traitement de texte (LibreOffice, OpenOffice) et des styles pour distinguer le texte du compte rendu de celui des listings des programmes Python que vous y insérez (au minimum, un style "python" avec police de caractères à largeur constante). Cherchez une police qui distingue bien les caractères qui se ressemblent : voir la figure 1 pour des exemples de polices avec I (i majuscule), l (L minuscule), 1 (le chiffre un), O (o majuscule), 0 (le chiffre zéro). Ne restez jamais coincé(e) face à un problème. La communauté des utilisateurs Python est très ouverte et donne, même aux débutants, des conseils, trucs et astuces, dans des FAQs et forums que vous pouvez consulter sur Internet. Par exemple : http://python.developpez.com/ http://programmers.stackexchange.com/questions/tagged/python En cas de problème, essayez de réduire la taille de votre programme pour en faire un exemple complet minimal (ECM), reproduisant l erreur sans contenir une ligne de code parasite. En créant cet ECM, neuf fois sur dix, vous trouverez l erreur. Si elle persiste, vous pouvez me contacter par mail, en y joignant l ECM. Pensez à noter et classer les problèmes rencontrés lors de l utilisation de Python, avec vos tentatives infructueuses de résolutions et vos solutions expliquées. Figure 1 Comparaison de polices pour listings Deux lignes de neuf caractères chacune. La deuxième commence par quatre espaces. Remarquez les bons alignements avec les deux dernières polices (les deux derniers caractères de chaque ligne sont bien l un au dessus de l autre). avec serif (Times New Roman) sans serif (Arial) exotique (Gothic) non non non monospace (Courier New) oui monospace (DejaVu Sans Mono) oui

MISE EN ROUTE 2 Mise en route Au démarrage, sélectionnez le système Linux. Créez un répertoire TP-Python dans votre espace de travail. Lancez Python : sous Linux : (using Python-3.x) menu Applications, puis sous-menu Programmation, puis lancement IDLE sous Windows, si vous l avez installé chez vous : menu Tous les programmes, puis sousmenu Python 3.x, puis puis lancement IDLE (Python GUI) Une fenêtre semblable à celle de la figure 2 s ouvre. Cette fenêtre (titrée Python Shell) permet d entrer des calculs : une invite (prompt en anglais) formée de trois chevrons >>> autorise à entrer des expressions Python. Entrez après l invite la ligne suivante, et validez par <Entr> : Figure 2 L interpréteur Python sous IDLE >>> (2015 * 2016) // 2 # la somme des 2015 premiers nombres 2031120 La fin de ligne à partir du # est un commentaire, ignoré par Python. L opérateur // est celui de la division euclidienne. Dans la fenêtre IDLE Python Shell, les raccourcis <Alt>p et <Alt>n permettent de naviguer dans l historique des commandes. Un nom spécial, _ (tiret de soulignement, underscore), permet de récupérer le résultat de la dernière commande. Si l on est positionné sur une ligne, l appui sur <Entr> copie/colle cette ligne en fin de ligne courante. Évidemment, <Ctrl>C/<Ctrl>V permet de copier/coller une portion de texte ou même un résultat. De plus, une aide très complète est fournie avec Python en passant par le menu Help/Python Docs, raccourci <F1>. Cette aide contient en particulier The Python Tutorial qui est une lecture indispensable : http://docs.python.org/3.4/tutorial/ Python Shell sous IDLE ne permet d entrer qu une commande à la fois : il n est en général utilisé que pour tester quelques lignes de programme. Quand le travail est plus long, on utilisera de préférence un éditeur de programmes permettant d entrer, de sauvegarder ou de recharger des enchaînements d instructions. Exercice 1 Entrée d expressions Entrez les commandes suivantes sous le Shell IDLE. Utilisez <Alt>p et <Alt>n pour utiliser les commandes de l historique : >>> 2014 * 2015 4058210 >>> 2014 * 2015 // 2 2029105 >>> 2014 * 2015 4058210 >>> _ // 2 2029105 >>> 2014*2015 + 2014 4060224

PYTHON, UNE CALCULATRICE SIMPLE 3 Python, une calculatrice simple Python permet de calculer avec trois sortes de nombres : les entiers appelés int (comme 0, 1 ou 12345678), les décimaux float (comme 3.14, 6.02e23 ou -1.6e-19) et les complexes complex (comme 2.5 + 3.1j ou 2.015e3 + 2.016e-3j) Essayez d entrer les nombres de l exercice 2. Dans The Python Tutorial, rendez-vous au paragraphe 3. An Informal Introduction to Python 3.1. Using Python as a Calculator 3.1.1. Numbers (ou http://docs.python.org/3.4/tutorial/introduction.html#numbers) et consultez-le pour les exercices suivants. Les opérateurs numériques de base sont : + addition - soustraction * multiplication / division // division entière % reste de la division entière ** élévation à la puissance Le type du résultat est celui de l opérande le plus compliqué, excepté pour / pour lequel le type du résultat ne peut pas être entier (cf. exercice 3) Il faut toujours avoir en tête que les calculs sur les décimaux (float) risquent d être entachés d erreurs (cf. exercice 4). Le module fractions permet de faire des calculs exacts sur les rationnels. >>> from fractions import * >>> Fraction(3, 10) + Fraction(2, 10) + Fraction(1, 10) Fraction(3, 5) >>> Fraction(1, 10) + Fraction(2, 10) + Fraction(3, 10) Fraction(3, 5) Exercice 2 Les nombres littéraux Écrivez en Python les valeurs mathématiques suivantes. Notez les messages d erreur, si vous laissez des espaces, ou oubliez de préfixer j dans les complexes. Remarquez que 3,14 n entraîne pas d erreur, mais crée le couple (3, 14). 1 234 123 456 789 3, 14 6, 02 10 23 1, 602 176 53 10 19 2 + 3 i 2 i Exercice 3 Calculs et types Quels sont les résultats (valeur et type) des expressions suivantes? 23 + 8 23.2-8.2 (17+1j) - (17+1j) 3 * 17 3 * 17.0 (3*1j) * (3-1j) 3 * 0 3.5 * 0 (3*1j) * 0 23 / 8 23 // 8 23.0 // 8 24 / 8 24 // 8 24.0 // 8 23 % 8 23.0 % 8 24.0 % 8 (2+4j) / (1+3j) (2+4j) // (1+3j) (2+4j) // (1+2j) 2 ** 16 2.0 ** 16 0 ** 0 (1j)** 2 (-1) ** 0.5-1 ** 0.5 Note : L appel à la fonction type(x) retourne le type de x. Exercice 4 Quelques calculs curieux Calculer les valeurs suivantes. Expliquez les bizarreries. 0, 3 + 0, 2 + 0, 1 0, 1 + 0, 2 + 0, 3 0, 3 0, 2 0, 1 0, 1 0, 2 0, 3 (1, 2 + 1, 3) 2 1, 2 2 + 2 1, 2 1, 3 + 1, 3 2 1 1 1 + 3 2 7 1 1 1 1 1 1 1 1 2 3 5

ÉCRITURE DE PROGRAMMES 4 Écriture de programmes Lorsque les enchaînements de calcul sont trop nombreux ou trop longs, il devient important de mémoriser les données, en utilisant des noms permettant de s y référer et de stocker les suites d instructions dans un fichier (script) que l on peut sauvegarder sur disque pour le conserver et le réutiliser en cas de besoin. Pour pouvoir saisir un programme et le sauvegarder, on dispose de l éditeur de texte IDLE (lui-même écrit en Python). Dans la fenêtre Python Shell, choissez le File/New File. La fenêtre ci-contre apparaît. Cette fenêtre, titrée pour l instant Untitled, va nous permettre de saisir notre premier programme, limitée à une seule instruction : Figure 3 Éditeur de texte IDLE print("bonjour") # print affiche le texte écrit entre double quotes On peut sauvegarder ce programme (le classique File/Save As...), et pour exécuter ce programme, on utilise le menu Run/Run Module (raccourci <F5>). La fenêtre Python Shell est réinitialisée et le programme s exécute. Les expressions peuvent être nommées pour être réutilisées plus facilement. Par exemple, pour demander à l utilisateur son nom, puis lui afficher un message de bienvenue : nom = input("entrez votre nom : ") # input demande une saisie clavier print("bonjour,", nom, "! Comment allez-vous?") Notez que la variable nom n est pas mise entre double quotes. Essayez de la mettre entre double quotes et notez le résultat. Certaines instructions sont composées de sous-instructions. prénom = input("entrez votre prénom : ") if prénom == "xxx": # "xxx" --> votre prénom print(prénom, "mérite un 'golden parachute' de 14 millions d'euros.") else: print(prénom, "devra encore faire ses preuves.") Exercice 5 Saisie et affichage print(suite d expressions séparées par des virgules) permet d afficher les valeurs de la suite séparées par des espaces. var = input(message) affiche le message, puis interrompt le programme en attendant que l utilisateur entre du texte, qui sera stocké dans la variable var. Écrire un programme qui demande à l utilisateur d entrer son nom, puis son prénom et affiche l initiale du prénom, suivie du nom. Note : pour obtenir le premier caractère d une variable nom chaîne de caractères, on utilise la syntaxe nom[0]. Les sous-instructions doivent toutes être décalées du même nombre d espaces, en général 4 espaces (indentation).

ÉCRITURE DE FONCTIONS 5 Écriture de fonctions Pour que des traitements puissent être réutilisés, Python permet de leur attribuer des noms. Dans une nouvelle fenêtre IDLE, entrez les lignes suivantes : # fichier : cercle.py # auteur : Jean-Claude GEORGES # date : 14/05/2010 # màj : 02/09/2014 # exemple de programme définissant des fonctions import math # périmètre d'un cercle def périmètre(rayon): """ calcule et retourne le périmètre d'un cercle de rayon donné La formule utilisée est p = 2 Pi r """ return 2 * math.pi * rayon # aire d'un cercle def aire(rayon): """ calcule et retourne l'aire d'un cercle de rayon donné La formule utilisee est a = Pi r 2 """ return math.pi * rayon**2 Exercice 6 Périmètre et aire du cercle Créez un nouveau répertoire de nom cercle Dans IDLE, ouvrez une nouvelle fenêtre (File/New window). Saisissez les fonctions ci-contre. Sauvegardez dans cercle sous le nom cercle.py et exécutez le programme. Notez les messages d erreur pour vous y habituer et corrigez-les. Testez les fonctions. Modifiez la fonction aire pour qu elle utilise la fonction périmètre grâce à la formule A = P r (copier/coller, modifiez les 2 commentaires et la fonction et renommez la aire2). Modifiez la fonction périmètre en faisant afficher (print) plutôt que retourner (return) la valeur du périmètre. Votre fonction aire2 fonctionne-t-elle toujours? Comment faire pour utiliser le caractère π dans les commentaires? Peut-on utiliser π comme nom de variable? Sauvegardez, puis exécutez le programme. S il n y a pas d erreurs, dans la fenêtre Shell IDLE, vous pouvez maintenant utiliser vos deux fonctions périmètre et aire : >>> périmètre(0.5) 3.141592653589793 >>> aire(2.0) 12.566370614359172 De plus, la première chaîne de caractères entre """triples double quotes""" est interprétée par Python comme une docstring (chaîne de documentation), et peut être affichée de manière naturelle par la commande : >>> help(aire) Help on function aire in module main : aire(r) calcule et retourne l'aire d'un cercle de rayon r La formule utilisee est a = Pi r 2 Exercice 7 Périmètre et aire du rectangle Sur le même modèle, créez un nouveau répertoire de nom rectangle et les fonctions de calcul du périmètre et de l aire du rectangle.

UN PROGRAMME COMPLET 6 Un programme complet # fichier : devine.py # auteur : Jean-Claude GEORGES # date : 19/05/2010 # màj : 02/09/2015 # exemple simple de programme python : le nombre à deviner import random # pour générer des nombres pseudo-aléatoires ########## introduction ################## print (""" Voici le classique jeu du nombre à deviner (niveau Adibou). L'ordinateur va choisir un nombre au pseudo-hasard et tu vas essayer de le deviner.""") ######## initialisation ################## MINI, MAXI = 1, 999 # double affectation pour les bornes du jeu nb_essais = 0 # nombre d'essais trouvé = False # type booleen nb_à_deviner = random.randrange(mini, MAXI +1) # nombre à deviner msg = 'Propose un nombre entre ' + str(mini) + ' et ' + str(maxi)+ ' : ' ########## corps du programme ################## while not trouvé: # tant qu'on n'a pas trouvé x = int(input(msg)) # int convertit le texte saisi en un entier if x == 284628: # cheat code DULRDU pour beta testeurs print(nb_à_deviner) continue nb_essais += 1 if x < nb_à_deviner: print (" C'est plus! Essaie encore!") elif nb_à_deviner < x: print (" C'est moins! Essaie encore!") else: # x == nb_à_deviner trouvé = True ########## fin du programme #################### print ("\nbravo. Tu as deviné le nombre en ", nb_essais, " tentative", 's' if nb_essais > 1 else '', sep = '', end = '! ') print("\n" * 5, "Merci d'avoir joué...") Exercice 8 Le jeu du + ou - Créez un nouveau répertoire de nom plusmoins Dans IDLE, ouvrez une nouvelle fenêtre (File/New window). Saisissez le programme ci-contre. Notez bien que les décalages (indentations) sont importants et marquent les blocs d instructions internes. Sauvegardez-le dans le répertoire plusmoins sous le nom devine.py et exécutez-le. Notez les messages d erreur pour vous y habituer et corrigez-les. Testez le programme. Le programme n est pas sécurisé et si vous entrez autre chose que des nombres, il plantera. Notez le message d erreur à l exécution (nous verrons plus tard comment remédier à cela). Vous pouvez constater que "tentative" prend un s au pluriel dans le message de félicitations. Comment tester qu il n en prend pas au singulier (gain en un coup)? Essayez de modifier le programme pour autoriser un nombre limité de tentatives et faire perdre le joueur s il dépasse ce nombre. N oubliez pas de modifier les commentaires de début. Note : lorsque l on modifie un programme qui fonctionne pour l améliorer, on ne travaille jamais sur l original mais sur une copie que l on renomme (par exemple devine2.py). Tout programme qui fonctionne doit être conservé.

LE TALKHYS 7 Le Talkhys Le Talkhys est un traité d arithmétique pratique d Ibn Albanna, mathématicien et astronome marocain de la première moitié du xiii e siècle. Ci-contre, quelques tableaux numériques extraits du Talkhys. Comment écrire en Python les instructions permettant d afficher, par exemple, le premier tableau du Talkhys (sans mise en forme) : 1 * 1 = 1 11 * 11 = 121 111 * 111 = 12321 1111 * 1111 = 1234321 11111 * 11111 = 123454321 Il faut tout d abord regarder comment s écrit une ligne du tableau : 11111 * 11111 = 123454321 En l analysant, on constate qu elle est formée comme suit : un nombre (111111), un texte ('*'), le même nombre (111111), un texte ('=') et enfin le carré du nombre (123454321). D où les lignes Python que l on peut tester dans une console : >>> a = 11111 >>> print(a, '*', a, '=', a ** 2) 11111 * 11111 = 123454321 Cette ligne va devoir être répétée, en modifiant la valeur de a. Comment la valeur de a peut-elle être déduite de la valeur de a de la ligne précédente? Une petite étude permet de dire que : a nouveau = a ancien 10 + 1 Ce qui permet d écrire la fonction suivante : def Talkhys1(nb_lignes): """ affiche les n premières lignes du tableau 1 du Talkhys. """ a = 0 for i in range(nb_lignes): # répètera 'nblignes' fois a = a*10 +1 print(a, "*", a, "=", a**2) Figure 4 Le Talkhys 1 1 = 1 11 11 = 121 111 111 = 12321 1111 1111 = 1234321 11111 11111 = 123454321 111111 111111 = 12345654321 1111111 1111111 = 1234567654321 9 1 + 2 = 11 9 12 + 3 = 111 9 123 + 4 = 1111 9 1234 + 5 = 11111 9 12345 + 6 = 111111 9 123456 + 7 = 1111111 9 1234567 + 8 = 11111111 9 12345678 + 9 = 111111111 9 123456789 + 10 = 1111111111 9 9 + 7 = 88 9 98 + 6 = 888 9 987 + 5 = 8888 9 9876 + 4 = 88888 9 98765 + 3 = 888888 9 987654 + 2 = 8888888 9 9876543 + 1 = 88888888 9 98765432 + 0 = 888888888 8 1 + 1 = 9 8 12 + 2 = 98 8 123 + 3 = 987 8 1234 + 4 = 9876 8 12345 + 5 = 98765 8 123456 + 6 = 987654 8 1234567 + 7 = 9876543 8 12345678 + 8 = 98765432 8 123456789 + 9 = 987654321 Exercice 9 Le Talkhys Entrez la fonction ci-contre et testez-la. Écrivez les fonctions permettant d afficher les trois autres tableaux du Talkhys (sans mise en forme)