Introduction à l'algorithmique et à la programmation en Python 3 - AMOS / 2021-2022
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Vous pouvez télécharger ce document au format PDF à l’adresse suivante : https://www.sismondi.ch/disciplines/applications-des-mathematiques/cours-eleves Picchione Serge AMOS / 2021-2022
Table des matières 1.1 Avant-propos 1 1.2 Algorithmes et programmes 2 1.3 Programmation en Python 3 6 1.3.1 Présentation de Python 3 6 1.3.2 Installation de Python 3 6 1.3.3 Interface Python 3 : zone de script et console 7 1.3.4 Types de données : stockage et affichage 8 1.3.5 Instructions conditionnelles 19 1.3.6 Instructions répétitives 25 1.3.7 Fonctions 32 1.3.8 Modules 40 1.3.9 Chaines de caractères 44 1.3.10 Listes 50 1.3.11 Graphismes 57 1.4 Corrections des activités et exercices 65 1.5 Schémas et résumés Picchione Serge AMOS / 2021-2022
1.1 Avant-propos • Ce chapitre d'introduction à l'algorithmique et à la programmation en Python 3 s'adresse à un publique scientifique, plus particulièrement aux élèves qui suivent au Collège de Genève les cours d'options spécifiques en application des Mathématiques : 3AMOS et 4AMOS. Aucun prérequis n'est nécessaire en algorithmique ou en programmation avec Python 3 à part peut-être une certaine ouverture d'esprit et une forme avancée de plasticité neuronale ! Des prérequis en Mathématiques niveau 1e et 2e du Collège de Genève sont les bienvenus. • L'objectif de cette introduction est de former rapidement et rigoureusement les élèves suivants un cours de 3AM OS et 4AM OS aux rudiments de programmation en Python 3. Lorsque nous traiterons par la suite des sujets spécifiques à l'application des Mathématiques comme la cryptographie, l'analyse numérique, les statistiques, etc. les élèves pourront comprendre plus facilement les algorithmes présentés, les programmer en langage Python 3 et aussi les modifier afin d'obtenir les résultats escomptés dans le cadre du cours. • Informations pour les enseignants : Les exemples et les exercices de ce chapitre d'introduction ont été sélectionnés et choisis dans le but d'introduire des concepts qui serviront aux élèves lorsque les chapitres suivant seront abordés : cryptographie classique (clés privées et publiques) et méthodes itératives en analyse numérique. En particulier, le sous-chapitre 1.3.9 Chaînes de caractères et 1.3.10 Listes sont conseillés si l'on veut aborder avec sérénité la programmation d'algorithmes en cryptographie. Le sous-chapitre 1.3.10 Listes est aussi conseillé si l'on désire écrire des programmes permettant de résoudre numériquement des systèmes d'équations linéaires en analyse numérique. ________________________________________________________________________________ P.S. 2021-2022 1 Programmation en Python 3 /AMOS
1.2 Algorithmes et programmes Exemple Une piscine municipale propose deux tarifs : • Tarif 1 : Une entrée : 3 €. • Tarif 2 : Abonnement annuel 9 €, puis 1 € l'entrée. Commençons par un problème simple : demander le nombre d'entrées et afficher s'il est préférable de choisir le premier ou le second tarif. Voici son algorithme : Partie 1) Le stockage des données (en gras). Il s'agit de repérer et de stocker les données nécessaires à la résolution du problème. DEMANDER un entier n p1 ← n ⋅ 3 p2 ← 9 + n ⋅ 1 SI p1 < p2 ALORS AFFICHER " Le tarif 1 est plus avantageux" SINON AFFICHER " Le tarif 2 est plus avantageux" FIN SI Partie 2) Le traitement (en gras). Il s'agit de déterminer toutes les « instructions » à donner pour automatiser la résolution du problème et obtenir les résultats attendus. DEMANDER un entier n p1 ← n ⋅ 3 p2 ← 9 + n ⋅ 1 SI p1 < p2 ALORS AFFICHER " Le tarif 1 est plus avantageux" SINON AFFICHER " Le tarif 2 est plus avantageux" FIN SI Partie 3) La sortie des résultats (en gras). Les résultats obtenus peuvent être affichés sur un écran (nombres, textes, graphiques). DEMANDER un entier n p1 ← n ⋅ 3 p2 ← 9 + n ⋅ 1 SI p1 < p2 ALORS AFFICHER "Le tarif 1 est plus avantageux" SINON AFFICHER "Le tarif 2 est plus avantageux" FIN SI ________________________________________________________________________________ P.S. 2021-2022 2 Programmation en Python 3 /AMOS
Définition d'un algorithme Un algorithme est : • une suite finie de règles à appliquer, • dans un ordre déterminé, • à un nombre fini de données, • se terminant (i.e., arriver, en un nombre fini d’étapes, à un résultat, et ce quelque soit les données traitées). Autre définition : Un algorithme est une suite finie d'opérations élémentaires constituant un schéma de calcul ou de résolution d'un problème donné. L'algorithmique désigne l'ensemble des règles et des techniques qui sont impliquées dans la définition et la conception des algorithmes. Un peu d'histoire Les algorithmes, dont on a retrouvé des descriptions exhaustives, ont été utilisés dès l’époque des Babyloniens (env. 1500 av. J-C.) pour des calculs concernant le commerce et les impôts. L’algorithme le plus célèbre est celui qui se trouve dans le livre 7 des Éléments d’Euclide. Il permet de trouver le plus grand diviseur commun, ou PGDC, de deux nombres (env. 300 av. J-C.). L’algorithmique a été systématisée par le mathématicien perse Al Khuwarizmi, auteur d’un ouvrage (souvent traduit par l’algèbre et le balancement) qui décrit des méthodes de calculs algébriques. Les conventions d'écriture d'un algorithme Il y a deux types de conventions. 1) L'algorithme graphique ou organigramme. Demander : n Faux Afficher : Vrai "Le tarif 2 est le plus avantageux" Afficher : "Le tarif 1 est le plus avantageux" Il s'agit d'une représentation graphique comportant des symboles de traitement et de test (rectangles, losanges, etc.) reliés entre eux par des lignes de liaison indiquant le flux des contrôles. Une norme ISO a été développée. Elle décrit en détails les différents symboles à utiliser pour représenter un algorithme informatique de manière normalisée. ________________________________________________________________________________ P.S. 2021-2022 3 Programmation en Python 3 /AMOS
2) L'algorithme textuel ou pseudo-code. DEMANDER un entier n p1 ← n ⋅ 3 p2 ← 9 + n ⋅ 1 SI p1 < p2 ALORS AFFICHER " Le tarif 1 est plus avantageux" SINON AFFICHER " Le tarif 2 est plus avantageux" FIN SI Le pseudo-code est une façon de décrire un algorithme sans référence à un langage de programmation en particulier. Il ressemble cependant à un langage de programmation authentique mais dont on aurait retiré la plupart des problèmes de syntaxe. Un algorithme puis un programme • Un algorithme n'est pas un programme. Un algorithme résout un problème donné indépendamment des particularités du langage de programmation. • Un programme est la réalisation (l'implémentation) d'un algorithme au moyen d'un langage donné (Visual Basic, C++, Scilab, Python, Fortran, etc.). Il s'agit de la mise en œuvre de l'ensemble des instructions. Par exemple, lors de la programmation il faut définir le format des variables utilisées, ce qui est un problème d'implémentation ignoré au niveau de l'algorithme. • Le « code source », désigne le texte, en langage de programmation, constituant le programme. Exemple Notre précédent algorithme peut se traduire dans le langage de programmation Python 3 et nous obtenons le programme suivant : n = eval (input( "Nombre d'entrées : ")) p1 = 3 * n p2 = 9 + n if p1 < p2 : print( "Le tarif 1 est plus avantageux") else : print( "Le tarif 2 est plus avantageux") Remarque La majorité des algorithmes présentés dans ce cours seront écrits soit en pseudo-code soit directement traduit dans le langage de programmation Python 3. Ce choix découle du fait que lorsque l'algorithme possède de nombreuses instructions il est plus aisé et plus compact de l'écrire en pseudo-code qu'à l'aide d'un organigramme. ________________________________________________________________________________ P.S. 2021-2022 4 Programmation en Python 3 /AMOS
En résumé Un algorithme est indépendant du langage de programmation dans lequel on va l’exprimer et de l’ordinateur utilisé pour le faire tourner. C’est une description abstraite des étapes conduisant à la solution d’un problème. Algorithme = partie conceptuelle d’un programme (indépendante du langage) Programme = implémentation (i.e., réalisation) de l’algorithme, dans un langage de programmation et sur un système particulier. Des programmes puis un logiciel Un ordinateur est composé de matériel (hardware) et de logiciels (software). Sans logiciel l'ordinateur ne fait rien parce qu'il n'a pas reçu les instructions lui indiquant ce qu'il doit faire. Les logiciels sont composés de programmes informatiques, qui indiquent à l'ordinateur comment effectuer les tâches. Les logiciels déterminent les tâches qu'un appareil informatique peut effectuer. Alors qu'à la vente d'un appareil informatique, l'accent est souvent mis sur le matériel informatique, c'est avant tout les logiciels qui donnent à l'ordinateur sa valeur ajoutée. Logiciel n'est donc pas synonyme de programme informatique. Un logiciel est un ensemble typiquement composé de plusieurs programmes, ainsi que tout le nécessaire pour les rendre opérationnels : fichiers de configuration, images bitmaps, procédures automatiques. Les deux principales catégories de logiciels sont les logiciels applicatifs et les logiciels de système. Le logiciel applicatif est destiné à aider les usagers à effectuer une certaine tâche, et le logiciel de système est destiné à effectuer des opérations en rapport avec l'appareil informatique. Le logiciel le plus important est le système d'exploitation : il sert à manipuler le matériel informatique, diriger les autres logiciels, organiser les fichiers, et faire l'interface avec l'utilisateur. Les logiciels disponibles dans le commerce sont toujours destinés à être utilisés avec un ou plusieurs systèmes d'exploitation donnés. Exemple de logiciels Photoshop (Adobe) Logiciel de retouche d’image. Writer (Suite LibreOffice) Traitement de texte gratuit. Chrome (Google) Navigateur Web. Excel (Microsoft) Tableur. ________________________________________________________________________________ P.S. 2021-2022 5 Programmation en Python 3 /AMOS
1.3 Programmation en Python 3 1.3.1 Présentation de Python 3 Python 3 est un langage informatique de haut niveau : c'est une suite d'instructions données par l'homme à l'ordinateur pour qu'il exécute certaines tâches. Parmi les nombreux avantages de ce langage, on peut citer : • Un langage libre et gratuit. • Un langage multiplateforme, c'est-à-dire que les programmes que vous allez réaliser pourront tout aussi bien s' exécuter sous Windows, Mac ou Linux. • Un langage simple et cependant puissant et rapide. Il est simple à apprendre, car intuitif. Par exemple, pour que l'ordinateur sache que l'on veut créer une variable nombre contenant la valeur 2, il suffit d'écrire : nombre = 2 alors qu'en C et C++ , par exemple, il faut préciser que la variable nombre est un entier (int) avant de pouvoir lui donner la valeur 2 : int nombre ; nombre = 2 ; Python est un langage de haut niveau. Cela signifie qu'il est plus proche du langage humain (ici, de l'anglais, malgré les apparences) que d'autres langages, et notamment le langage binaire, que lit directement l'ordinateur. La traduction de nombre = 2 (Python) en binaire devrait en effet donner quelque chose comme : 100101101...0011101001 • Un langage qui possède de nombreuses bibliothèques mathématiques très évoluées dans de multiples domaines (traitement de l'image, analyse de Fourier, calcul numérique ... ) et qui permettent ainsi de réaliser facilement de nombreux programmes assez pointus. • Python est un langage de programmation en constante évolution. Il est à l'heure actuelle, en 2019 dans sa version 3.6. 1.3.2 Installation de Python 3 Adresses internet pour le téléchargement https://www.python.org/ https://edupython.tuxfamily.org/ avec l'éditeur : PyScripter https://www.anaconda.com/download/ avec l'éditeur : Spyder Remarque : Un éditeur de texte est un logiciel destiné à la création et l'édition de fichiers textes. Important : Télécharger la version Python 3.x et non la version Python 2.x . ________________________________________________________________________________ P.S. 2021-2022 6 Programmation en Python 3 /AMOS
1.3.3 Interface Python : zone de script et console Interface de la distribution Anaconda/Python Le logiciel Spyder fait office d'éditeur de texte pour Anaconda/Python. Cette interface est découpée en plusieurs zones, en particulier : • La zone de script qui permet d'écrire/saisir des programmes et de les exécuter ensuite. • La console ou s'afficheront les résultats des programmes. Après avoir exécuter Spyder on obtient la fenêtre suivante : (copie d'écran) Zone de script Console Remarque : Cet affichage permet de s'assurer que la console est correctement configurée. Conclusion • En Python 3, on écrit un programme dans la zone de script. • Pour afficher le(s) résultat(s) du programme on l’exécute et on regarde dans la console. • Dans certaines situations, on peut aussi écrire directement dans la console certaines instructions. Nous verrons dans ce cours, que la console Python peut être utilisée comme une calculatrice scientifique. Commandes utiles dans Spyder pour l’affichage dans la zone de script et la console : Agrandissement du texte : Ctrl + + Réduction du texte : Ctrl + − ________________________________________________________________________________ P.S. 2021-2022 7 Programmation en Python 3 /AMOS
1.3.4 Types de données : stockage et affichage • En Python 3, on écrit un programme dans la zone de script. • Pour afficher le(s) résultat(s) du programme on l’exécute et on regarde dans la console. • Dans Spyder, pour exécuter un programme on appuie sur la touche F 5 ou . • Dans certaines situations, on peut aussi écrire directement dans la console certaines instructions. Exemple 01 Nom du fichier : Exemple_donnees_01.py # Calcul de l’aire d’un carré Programme Python (zone de script) # Version 01 cote=10 aire=cote*cote aire Entrée et/ou Sortie Python (console) Out : Remarque : Il manque la commande print pour afficher le résultat désiré. Programme Python (zone de script) # Version 02 cote=10 aire=cote*cote print(aire) Entrée et/ou Sortie Python (console) Out : 100 Programme Python (zone de script) # Version 03 cote=10 aire=cote*cote print(cote,aire,sep="\t") Entrée et/ou Sortie Python (console) Out : 10 100 ________________________________________________________________________________ P.S. 2021-2022 8 Programmation en Python 3 /AMOS
Programme Python (zone de script) # Version 04 cote=10 aire=cote*cote print("L'aire du carré de coté",cote,"est égal à",aire,".") Entrée et/ou Sortie Python (console) Out : L'aire du carré de coté 10 est égal à 100 . Remarque Dans la commande print( ) on peut afficher des variables ; par exemple des nombres cote et aire et des chaînes de caractères comme "L'aire du carré de coté" , "est égal à" et "." . Il faut séparer ses différents objets par une virgule. Programme Python (zone de script) # Version 05 cote=eval(input("Entrer la valeur du coté d'un carré: ")) aire=cote*cote print("L'aire du carré de coté",cote,"est égal à",aire,".") Entrée et/ou Sortie Python (console) In : Entrer la valeur du coté d'un carré : 10 Out : L'aire du carré de coté 10 est égal à 100 . Remarque v = input (txt) , affiche dans la console le texte txt dans lequel on entrera ce qui est demandé. La réponse est alors affectée à la variable v sous forme d'une chaîne de caractères. Remarques générales a) Le symbole # (hashtag ou mot-dièse) permet d’écrire un commentaire dans un programme sans qu’il soit exécuté. b) Le petit carré rouge situé dans la zone console, permet d’interrompre la commande en cours. Autrement dit, cela stoppe l’exécution du programme. c) Après avoir exécuté un programme et obtenu des résultats dans la console et avant d’exécuter un nouveau programme, on peut utiliser les commandes : • Redémarrer le noyau (Restart Kernel) qui a pour effet, entre autres, de réinitialiser la valeur prise par toutes les variables lors de l’exécution du dernier programme. • Effacer la console (Clear Console) qui a pour effet, d’effacer tout le texte affiché dans la console. ________________________________________________________________________________ P.S. 2021-2022 9 Programmation en Python 3 /AMOS
Exemple 02 Nom du fichier : Exemple_donnees_02.py Programme Python (zone de script) a=2 # Type de donnée : entier b=3.5 # Type de donnée : flottant a=a+1 b=a*b b=a a=a**3 print("a=",a) print("b=",b) Activité a) Sans utiliser d’éditeur Python, compléter le tableau ci-dessous en indiquant la valeur des variables à chaque ligne du programme en précisant le type de donnée obtenu (entier ou flottant). Instructions a Type b Type a=2 b=3.5 a=a+1 b=a*b b=a a=a**3 b) Utiliser un éditeur Python pour écrire le programme du point a) dans la zone de script et obtenir la sortie dans la console. Le programme Python affiche en sortie dans la console : a= b= Que faire si un programme ne marche pas ? Il y a plusieurs types d'erreurs. • La cause peut-être une erreur de syntaxe (une faute de frappe) ou même un oubli : une parenthèse, une majuscule, une virgule au lieu d'un point, etc. L'éditeur nous renseigne en général sur l'erreur que nous commettons : à quelle ligne, le type d'erreur, etc. Comparer vos lignes de code qui ne fonctionnent pas avec celle d'un programme qui fonctionne. • Si le programme ne vous donne pas les résultats escomptés, vous pouvez placer la commande print() à des endroits stratégiques pour observer la valeur des variables déclarées dans le programme. • On peut aussi consulter Internet (avec forums ou tutos pour la plupart en anglais ... ) car l'erreur que vous avez faite a probablement été commise par quelqu'un d'autre, avant vous, et qui a la bonne idée d'en témoigner. Les erreurs en programmation restent souvent une occasion de progresser. C'est à force de recopier et de lire des lignes de programme, qu'on se forge une culture de la programmation et qu'on devient soi-même un bon programmeur. Courage ! ________________________________________________________________________________ P.S. 2021-2022 10 Programmation en Python 3 /AMOS
Remarques sur les types de données a) L'avantage d'utiliser un langage de programmation pour effectuer des calculs réside dans le fait de pouvoir stocker des données (informations) en mémoire. On peut, lorsque l'on réalise un programme, utiliser des variables pour stocker des valeurs. Le fait de donner un nom à un calcul, un texte ou un autre objet s'appelle l'affectation. En Python Résultat après exécution Stocke une donnée dans une variable qui porte nom_var = donnée le nom : nom_var b) Affichage de données En Python Résultat après exécution print (données) Affiche dans la console les données c) Opérations usuelles sur les données de type nombres en Python 3 : Opération en Python Résultat après exécution a+b addition a–b soustraction a*b multiplication a/b division b a ** b a puissance b : a Quotient de la division euclidienne de a par b a // b si a et b sont des entiers. Reste de la division euclidienne de a par b a%b si a et b sont des entiers. Théorème (division euclidienne) Soit a ∈ et b ∈ * . Il existe des entiers q et r ∈ tels que a = b ⋅ q + r avec 0 ≤ r < b De plus q et r sont uniques. Terminologie q est le quotient et r le reste. Exemples i) Division euclidienne de 6789 par 34 : 6789 = 34 ⋅ 199 + 23 avec 0 ≤ 23 < 34 a b q r r b ii) La division euclidienne de −17 par 3 est : − 17 = 3 ⋅ ( −6 ) + 1 avec 0 ≤ 1
d) Les types de données en Python 3 Il existe de nombreux types de données en Python ; en voici quelques-uns que nous allons régulièrement utiliser. • Les nombres ; deux catégories : Les entiers, qui correspondent en Mathématiques aux entiers relatifs comme : 74 et -2 . Les flottants qui correspondent en Mathématiques aux nombres décimaux comme : 12.97 et -14.0. Programme Python (zone de script) Entrée et/ou Sortie Python (console) a=34 print(a,type(a)) # type() : renseigne sur le type de données Out : 34 b=7.8 print(b,type(b)) Out : 7.8 c=a+b print(c,type(c)) Out : 41.8 d=int(a+b) # int() : extraction d'un entier print(d,type(d)) Out : 41 e=float(a) # float() : extraction d'un flottant print(e,type(e)) Out : 34.0 • Les chaînes de caractères qui sont des successions de caractères encadrés par des guillemets, comme par exemple ´Ok !´ , ´456´ et ´Bonjour Gaëtan´ . Programme Python (zone de script) Entrée et/ou Sortie Python (console) nom1='bonjour' Out : bonjour print(nom1,type(nom1)) nom2='ciel' Out : ciel print(nom2,type(nom2)) nom3=nom1+3*nom2 Out : print(nom3,type(nom3)) bonjourcielcielciel nom4='3+4' print(nom4,type(nom4)) Out : 3+4 nom5=eval('3+4') # eval() : transforme une chaine en nombre print(nom5,type(nom5)) Out : 7 a,b=6,10 nom6=str(a)+'+'+str(b) # str() : transforme un nombre en chaine Out : 6+10 print(nom6,type(nom6)) Remarque : Les opérations + et * n’ont pas les mêmes effets selon qu’ils agissent sur des nombres ou des chaînes. Le chapitre 1.3.9 donne plus de détails sur ce type de donnée et les opérations définies sur ce type de donnée. ________________________________________________________________________________ P.S. 2021-2022 12 Programmation en Python 3 /AMOS
• Les listes qui sont des regroupements de données délimitées par des crochets. Par exemple, [1.9,46 ," Anne",−24 ] est une liste de quatre éléments : le flottant 1.9, puis l'entier 46, puis la chaîne de caractères "Anne", et enfin l'entier -24. Programme Python (zone de script) Entrée et/ou Sortie Python (console) L1=[ ] # L=[ ] : liste vide print(L1,type(L1)) Out : [ ] L1.append("Marie") # L.append(e) : ajoute e a la fin de L print(L1,type(L1)) Out : ['Marie'] L1.append(18) print(L1,type(L1)) Out : ['Marie',18] L1.append(37.2) print(L1,type(L1)) Out : ['Marie',18,37.2] Remarque : le chapitre 1.3.10 donne plus de détails sur ce type de donnée et les opérations définies sur ce type de donnée. La commande type(donnée) nous renseigne sur le type de donnée / variable avec lequel on travaille dans un programme Python. Exercice 01 a) Sans utiliser d’éditeur Python, déterminer le résultat de chacun des « calculs » suivants en précisant son type (entier ou flottant). Calculs Résultat Type de donnée 1) 7 // 2 2) 4%2 3) 3.0 ** 3 4) – 5 // 2 5) 5 ** 0 + 7 6) 2 ** -2 7) -2 ** 10 8) 1–5*2 9) 5–3/–2 10) – 13 % 3 11) 1345 % 10 12) 1345 // 10 % 10 13) 1345 // 100 % 10 14) 1345 // 1000 % 10 b) Obtenir le résultat des « calculs » précédant en utilisant la console d’un éditeur Python. ________________________________________________________________________________ P.S. 2021-2022 13 Programmation en Python 3 /AMOS
Exercice 02 Soit n un nombre entier positif. Sans utiliser d’éditeur Python, relier par une flèche les expressions Python aux expressions françaises correspondantes : n +1 • • Le chiffre des unités de n n %10 • • Le chiffre des dizaines de n n / /10 %10 • • L’entier précédant n n / /100%10 • • Le double de n n** 2 • • L’entier consécutif à n n−1 • • Le chiffre des centaines de n n* 2 • • Le carré de n Remarque : Après avoir cherché les réponses, vous pouvez utiliser la console d’un éditeur Python pour évaluer les expressions Python. Exercice 03 a) Sans utiliser d’éditeur Python et pour chaque programme : • Créer un tableau ou apparaissent la valeur des variables à chaque ligne du programme en précisant le type de donnée obtenu (entier ou flottant). • Quel est la sortie affichée dans la console après exécution du programme dans la zone de script ? 1) Programme (zone de script) 2) Programme (zone de script) x,y,z=1,2,3 a,b=6,5 x,y=y,z a=a-b y,z=z,x b,a=a+1,2*b y=1/4*z b=b%3 z=x+y+z a=a-b//2+0.5 print("x=",x) print("a=",a) print("y=",y) print("b=",b) print("z=",z) 3) Programme (zone de script) 4) Programme (zone de script) e=2 res=5.0 e=2**e res=(res-1)/res e=2**e res=10/res e=float(e) res=int(res) print("e=",e) print("res=",res) b) Utiliser un éditeur Python pour écrire les programmes du point a) dans la zone de script et obtenir la sortie dans la console. Insérer la commande print(var,type(var)) aux endroits appropriés de vos programmes, pour obtenir la valeur et le type des variables var. Nom du fichier : Exercice_donnees_03.py ________________________________________________________________________________ P.S. 2021-2022 14 Programmation en Python 3 /AMOS
Exercice 04 a) Sans utiliser d’éditeur Python, déterminer le résultat de chacun des « calculs » suivants en précisant son type (entier, flottant, chaîne de caractère ou liste). Calculs Résultat Type de donnée 1) 11 + 2 * 3 2) "11" + 2 * "3" 3) str(11) + "2 * 3" 4) "11 + 2 * 3" 5) eval("11 + 2 * 3") + 3/2 6) str(11) + str(2*3) 7) ["11","2",2 * 3] 8) "11" + 2 * 3 9) 3 * str(str(11) + "2") 10) eval("a + 3") 11) str(11 + 2 * 3) 12) 11 + "2" * [3] 13) eval("11" + "2") ** 3 14) eval("11**3") / 2 15) eval("11**3") // 2 16) "11**3" / 2 17) [eval("11**3") % 2] 18) str(11)+str(3)+ "/"+"2" 19) str(a)+str(a)+ "/"+"2" 20) "a+b" + "/" + "2" b) Obtenir le résultat des « calculs » précédant en utilisant la console d’un éditeur Python. ________________________________________________________________________________ P.S. 2021-2022 15 Programmation en Python 3 /AMOS
Exercice 05 a) Sans utiliser d’éditeur Python et pour chaque programme : • Créer un tableau ou apparaissent la valeur des variables à chaque ligne du programme en précisant le type de donnée obtenu (entier, flottant, chaîne de caractère ou liste). • Quel est la sortie affichée dans la console après exécution du programme dans la zone de script ? 1) Programme (zone de script) 2) Programme (zone de script) x="10" x="10" x=2*x x=eval(x) x=eval(x) x=2.0*x x=2*x x=str(x) print(x) x=3*x print(x) 3) Programme (zone de script) x = "3" y= eval(x) L=[ ] z="2**"+x+"="+str(2**y) L.append(z) y=y+1 z="2**"+str(y)+"="+str(2**y) L.append(z) print(L) 4) Programme (zone de script) a=5 D ="("+str(a)+"+X)"+chr(0x00B2)+"="+str(a**2)+"+"+str(2*a)+"X+X"+chr(0x00B2) print(D) b) Ecrire un programme en Python 3 qui affiche en sortie le développement de (a + X)(a − X) où a est un nombre entier saisi par l'utilisateur. c) Utiliser un éditeur Python pour écrire les programmes du point a) dans la zone de script et obtenir la sortie dans la console. Insérer la commande print(var,type(var)) aux endroits appropriés de vos programmes, pour obtenir la valeur et le type des variables var. Nom du fichier : Exercice_donnees_05.py ________________________________________________________________________________ P.S. 2021-2022 16 Programmation en Python 3 /AMOS
Exercice 06 Une année-lumière est une unité de distance couramment utilisée en astronomie, définie comme la distance parcourue par la lumière en une année (365,25 jours). La vitesse de la lumière étant environ égale à 299’792 km par seconde. Écrire un programme en Python 3 convertissant un nombre d'années-lumière en kilomètres. Indication : Programme Python (zone de script) a = eval(input(…………….)) k = …………………………. print(…………………….….) Nom du fichier : Exercice_donnees_06.py Exercice 07 a) Si n est une variable contenant un nombre à 2 chiffres non nuls, écrire un programme en Python 3 permettant d’afficher une variable p contenant le nombre n écrit « à l'envers » . Exemple : si n = 12 alors p = 21 b) Même question avec un nombre à (exactement) 3 chiffres. Exemple : si n = 342 alors p = 243 Indications : i) Utiliser le quotient // et le reste % de la division euclidienne (entière). ii) n = x ⋅ 101 + y ⋅ 100 ou n = x ⋅ 10 2 + y ⋅ 101 + z ⋅ 100 iii) Programme Python (zone de script) # Partie a) n= eval(input(……………..…….)) x=………………………………….. y=………………………………….. p=………………………………….. print(………………………..……..) # Partie b) n= eval(input(…………..……….)) x=………………………………….. y=………………………………….. y=………………………………….. p=………………………………….. print(……………………..………..) Nom du fichier : Exercice_donnees_07.py ________________________________________________________________________________ P.S. 2021-2022 17 Programmation en Python 3 /AMOS
Exercice 08 Un magasin de bricolage propose une application pour calculer le nombre n de pots de peinture nécessaires à repeindre les 4 murs d'une pièce dont on connaît les dimensions l, p et h exprimées en mètres. a) Exprimer la surface S des 4 murs latéraux de la pièce. b) Ecrire un programme en Python 3 qui, connaissant les dimensions de la pièce, calcule le nombre n de pots de peinture nécessaires, sachant que sur le pot de peinture, on peut lire : Indications : i) Utiliser le quotient // de la division euclidienne (entière). ii) Programme Python (zone de script) h = eval(input(…………..……….)) l = eval(input(…………..……….)) p = eval(input(…………..……….)) S = ………………………………….. n = ………………………………….. print(…………………………………..) Nom du fichier : Exercice_donnees_08.py ________________________________________________________________________________ P.S. 2021-2022 18 Programmation en Python 3 /AMOS
1.3.5 Instructions conditionnelles Dans un algorithme ou un programme on peut effectuer des instructions selon certaines conditions en utilisant ce que l’on appelle des instructions conditionnelles. Exemple 01 Nom du fichier : Exemple_Test_01.py # Est-ce que a est plus petit que b ? Programme Python (zone de script) a=eval(input("Entrez un nombre a : ")) b=eval(input("Entrez un nombre b : ")) print("a=",a) print("b=",b) if a < b : print(a,"est plus petit que",b) else: print(b,"est plus petit ou égal à",a) # Est-ce que a est plus petit ou égal à b ? Programme Python (zone de script) # Version 01 # Version 02 a=eval(input("Entrez un nombre a : ")) a=eval(input("Entrez un nombre a : ")) b=eval(input("Entrez un nombre b : ")) b=eval(input("Entrez un nombre b : ")) print("a=",a) print("a=",a) print("b=",b) print("b=",b) if a < b : if a < b : print(a,"est plus petit que",b) print(a,"est plus petit que",b) else: elif a == b: if a == b : print(a,"est égal à",b) print(a,"est égal à",b) else: else: print(b,"est plus petit que",a) print(b,"est plus petit que",a) Entrée et/ou Sortie Python (console) In : Entrez un nombre a : 45 In : Entrez un nombre a : 76 In : Entrez un nombre a : 345 In : Entrez un nombre b : 56 In : Entrez un nombre a : 54 In : Entrez un nombre a : 345 Out : 45 est plus petit que 56 Out : 54 est plus petit que 76 Out : 345 est égal à 345 ________________________________________________________________________________ P.S. 2021-2022 19 Programmation en Python 3 /AMOS
Exemple 02 Nom du fichier : Exemple_Test_02.py # Est-ce que c appartient à l’intervalle [a ;b] ? Programme Python (zone de script) # Version 01 a=eval(input("Entrez un nombre a : ")) b=eval(input("Entrez un nombre b : ")) c=eval(input("Entrez un nombre c : ")) if a
Définition Un booléen est un type de donnée qui ne peut prendre que deux valeurs : vrai (V) ou faux (F). En Python, ces deux valeurs sont notées True et False. Opérateurs de comparaisons • a = = b renvoie True si les valeurs de a et b sont égales. • a = = b renvoie False si les valeurs de a et b ne sont pas égales. • a != b renvoie True si les valeurs de a et b ne sont pas égales. • a != b renvoie False si les valeurs de a et b sont égales. • a > b renvoie True si a est strictement plus grand que b. • a > b renvoie False si a n’est pas strictement plus grand que b. • a >= b renvoie True si a est plus grand ou égal à b. • a >= b renvoie False si a n’est pas plus grand ou égal à b. • a < b renvoie True si a est strictement plus petit que b. • a < b renvoie False si a n’est pas strictement plus petit que b. • a = b ) Out : False print( a < b ) Out : True print( a
Remarques sur les instructions conditionnelles En Python Résultat après exécution if : Si est vraie (True) alors . if : Si est vraie (True) alors else : sinon if : Si est vraie (True) alors elif : sinon si est vraie (True) alors else : sinon Le test "Si" va en Python se traduire par l'instruction "if ". Lorsque Python rencontre une instruction "if ", il effectue l'ensemble des indentées (c'est à dire décalées) qui suivent lorsque la est vraie (True). L'indentation (décalage du texte) peut être obtenue à l'aide de la touche (TAB) ou en utilisant des espaces. Le "alors" n'apparaît pas en Python, mais est remplacé par deux points ":". Le "sinon" va en Python se traduire par l'instruction " else : " Lorsque Python rencontre une instruction "else : ", il effectue l'ensemble des indentées (c'est à dire décalées) qui suivent lorsque la est fausse (False). Opérateurs booléens Il existe des opérations entres les variables booléennes. C1 C2 C1 and C2 C1 or C2 not C1 condition 1 condition 2 C1 et C2 C1 ou C2 non C1 True True True True False True False False True False False True False True True False False False False True Programme Python (zone de script) Entrée et/ou Sortie Python (console) a,b,c = 5,7,10 print( a
Exercice 01 Écrire un programme en Python 3 qui indique si le nombre entier positif n entré par l’utilisateur est un nombre entier pair ou impair. Indications : i) Utiliser le reste et le quotient de la division euclidienne par 2. ii) Programme Python (zone de script) n= eval(input(…………………………….)) if ……………………… : print(……………………………………..) else: print(……………………………………..) Nom du fichier : Exercice_Test_01.py Exercice 02 x si x ≥ 0 Considérons la fonction valeur absolue définie par : f ( x= ) x= − x si x < 0 Écrire un programme en Python 3 qui calcule l’image de cette fonction si l’utilisateur donne comme entrée la préimage x. Remarque : N’utiliser pas la fonction prédéfinie dans Python : abs(x) Indications : Programme Python (zone de script) x= eval(input(…………………………….)) if ……………………… : print(……………………………………..) else: print(……………………………………..) Nom du fichier : Exercice_ Test_02.py Exercice 03 Écrire un programme en Python 3 qui indique si le nombre n entré par l’utilisateur est plus grand, plus petit ou égal à 10. Indications : Programme Python (zone de script) n= eval(input(…………………………….)) if ……………………………. : print(…………………………….) else: if ……………………………. : print(…………………………….) else: print(…………………………….) Nom du fichier : Exercice_ Test_03.py ________________________________________________________________________________ P.S. 2021-2022 23 Programmation en Python 3 /AMOS
Exercice 04 Écrire un programme en Python 3 qui permet de résoudre une équation polynomiale du 1e degré de la forme ax + b =0 si l’utilisateur donne comme entrée des coefficients a,b ∈ . Indication : Programme Python (zone de script) a= eval(input(…………………………….)) b= eval(input(…………………………….)) if …….… and …….… : print(………….) elif …….… and …….… : print(………….) else: print(………….) Nom du fichier : Exercice_ Test_04.py Exercice 05 Écrire un programme en Python 3 qui permet de résoudre une équation polynomiale du 2e degré de la forme : ax 2 + bx + c =0 si l’utilisateur donne comme entrée, des coefficients a,b,c ∈ avec a ≠ 0 . Indications : i) Utiliser la formule de Viète : −b − ∆ −b + ∆ ax 2 + bx + c = 0 ⇒ x1 = et x2 = avec ∆ = b 2 − 4ac 2a 2a ii) Pour calculer la racine carrée d’un nombre x il faut importer d’abord le module math en tapant dans le programme la ligne suivante : import math as mt Ecrire ensuite dans le programme : mt.sqrt(x) iii) Programme Python (zone de script) import math as mt a=……………………… b=……………………… c=……………………… Delta=……………………… if ……………………… : print(………….) elif……………………… : print(………….) else: print(………….) Nom du fichier : Exercice_ Test_05.py ________________________________________________________________________________ P.S. 2021-2022 24 Programmation en Python 3 /AMOS
1.3.6 Instructions répétitives Une grande force de la programmation, et l'une des raisons pour lesquelles elle a été inventée, c'est de pouvoir répéter plusieurs fois la même tâche. Nous allons ajouter des « boucles » à nos algorithmes et programmes. Nous allons étudier deux types d’instructions répétitives : i) les boucles bornées de type « for » ii) les boucles non bornées de type « while ». Exemple 01 Nom du fichier : Exemple_Boucle_01.py # Écrire tous les nombres entiers de 3 à 15 Programme Python (zone de script) # version 01 / boucle : for for i in range(3,16,1): print(i) Entrée et/ou Sortie Python (console) Out : 3 4 5 6 7 8 9 10 11 12 13 14 15 Programme Python (zone de script) # version 02 / boucle : for / variable de type : liste L=[ ] for i in range(3,16,1): L.append(i) print(L) Entrée et/ou Sortie Python (console) Out : [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] ________________________________________________________________________________ P.S. 2021-2022 25 Programmation en Python 3 /AMOS
Programme Python (zone de script) # version 03 / boucle : for / variable de type : liste / etapes L=[ ] for i in range(3,16,1): L.append(i) print(L) Entrée et/ou Sortie Python (console) Out : [3] [3, 4] [3, 4, 5] [3, 4, 5, 6] [3, 4, 5, 6, 7] [3, 4, 5, 6, 7, 8] [3, 4, 5, 6, 7, 8, 9] [3, 4, 5, 6, 7, 8, 9, 10] [3, 4, 5, 6, 7, 8, 9, 10, 11] [3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] Programme Python (zone de script) # version 04 / boucle : while / variable de type : liste L=[ ] i=3 while i
Exemple 02 Nom du fichier : Exemple_Boucle_02.py # Écrire tous les nombres entiers de 30 à 4 Programme Python (zone de script) # version 01 / boucle : for / variable de type : liste L=[ ] for i in range(30,3,-1): L.append(i) print(L) # version 02 / boucle : while / variable de type : liste L=[ ] i=30 while i>=4: L.append(i) i=i-1 print(L) Entrée et/ou Sortie Python (console) Out : [30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4] Exemple 03 Nom du fichier : Exemple_Boucle_03.py # Écrire la table de multiplication de 8 pour les entiers de 0 à 10 Programme Python (zone de script) for k in range(0,11): print(k,"* 8 =",k*8) Entrée et/ou Sortie Python (console) Out : 0*8=0 1*8=8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72 10 * 8 = 80 ________________________________________________________________________________ P.S. 2021-2022 27 Programmation en Python 3 /AMOS
Exemple 04 Nom du fichier : Exemple_Boucle_04.py # Écrire la somme de tous les nombres entiers compris entre a et b avec 0
Remarques sur les instructions répétitives a) Une boucle bornée est ainsi structurée : En Python Résultat après exécution La variable var prend successivement toutes for var in range (debut,fin,pas) : les valeurs entières de l’entier debut à l’entier fin avec un pas entier de pas, et pour chacune d’elle, exécution des . La variable var est appelée compteur de la boucle. Les paramètres debut et pas sont optionnels. Cela permet de réaliser une boucle en faisant parcourir à la variable var tous les entiers : • de l'intervalle [0; fin[ si un seul paramètre est renseigné. • de l'intervalle si 2 paramètres [ debut; fin[ sont renseignés. • dans l'intervalle [ debut; fin[ mais en réalisant une suite arithmétique de raison pas si les 3 paramètres sont renseignés. Le "pour" va en Python se traduire par l'instruction " for ". Les sont indentées par rapport au for . L'indentation (décalage du texte) peut être obtenue à l'aide de la touche (TAB) ou en utilisant des espaces. On utilise en général la boucle " for "quand on connaît à l’avance le nombre de fois que l’on souhaite répéter une instruction. b) Une boucle non bornée est ainsi structurée : En Python Résultat après exécution while : Tant que la est vraie (True) alors effectuer les . Le "tant que" va en Python se traduire par l'instruction " while ". Lorsque Python rencontre une instruction " while ", il effectue l'ensemble des indentées (c'est à dire décalées) qui suivent lorsque la est vraie (True). On utilise en général la boucle "while " quand on ne connaît pas à l’avance le nombre de fois que l’on souhaite répéter une instruction. La boucle "while " peut s’avérer utile si on veut qu’une variable prenne successivement toutes les valeurs de debut à fin avec un pas de pas, sans que ses 3 derniers paramètres soient entiers. ________________________________________________________________________________ P.S. 2021-2022 29 Programmation en Python 3 /AMOS
Exercice 01 a) Écrire un programme en Python 3 qui affiche tous les nombres pairs entre 2254 et 2288 dans une liste. b) Écrire un programme en Python 3 qui affiche tous les nombres impairs entre 131 et 255 dans une liste. Remarque : Proposer deux versions, une avec la boucle while et l’autre avec for . Indication : Programme Python (zone de script) # Version / boucle : for # Version / boucle : while L=[ ] L=[ ] for …………………….. : i=…………………….. L.append(…………….) while …………………….. : print(……………………..) L.append(…………….) i=…………………….. print(……………………..) Nom du fichier : Exercice_Boucle_01.py Exercice 02 a) Ecrire un programme en Python 3 qui affiche la somme : 20 + 21 + 2 2 + ....... + 2 n et calcule cette somme. Le nombre n est un entier positif entré par l’utilisateur. Indications : Programme Python (zone de script) n=eval(input(………………………)) Chaine=……………………………. Somme=…………………………… Terme=…………………………….. for ……………………..: Chaine=……………………… Terme=………………………. Somme=…………………….. Chaine=……………………. Somme=…………………… print(………………………..) Entrée et/ou Sortie Python (console) In : Entrez le nombre entier n=5 Out : 2^0+2^1+2^2+2^3+2^4+2^5 = 63 Nom du fichier : Exercice_Boucle_02.py ________________________________________________________________________________ P.S. 2021-2022 30 Programmation en Python 3 /AMOS
Exercice 03 Écrire un programme en Python 3 qui affiche tous les livrets de 1 à 10. Exemple Livret de 1 Livret de 2 Livret de 3 ….. 1*1=1 2*1=2 3*1=3 ….. 1*2=2 2*2=4 3*2=6 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 1*5=5 2*5=10 3*5=15 1*6=6 2*6=12 3*6=18 1*7=7 2*7=14 3*7=21 1*8=8 2*8=16 3*8=24 1*9=9 2*9=18 3*9=27 1*10=10 2*10=20 3*10=30 Indications : i) Placer une boucle à l'intérieur d'une autre boucle. ii) Programme Python (zone de script) for ……………………. : print(…………………….) print(…………………….) for ……………………. : print(…………………….) Nom du fichier : Exercice_Boucle_03.py Exercice 04 Décrire en français et à l’aide de dessins, sans exécuter le programme dans un éditeur, l’entrée et la sortie du programme Python 3 écrit ci-dessous. Programme Python (zone de script) n=eval(input("Entrez un entier positif n=")) print(n*" "+"*") for i in range(1,n,1): print((n-i)*" "+"*"+(2*i-1)*" "+"*") Nom du fichier : Exercice_Boucle_04.py ________________________________________________________________________________ P.S. 2021-2022 31 Programmation en Python 3 /AMOS
Vous pouvez aussi lire