On présente ici les bases du langage Python : calculs, variables, affichage, saisie, type de données.\n","Les fonctionnalités un peu plus avancées telles que les instructions conditionnelles, les boucles, les fonctions ou les listes seront étudiées dans les prochains chapitres.
Le langage Python a été créé par le néerlandais Guido van Rossum en 1991. \n"," Il existe de nombreux langages de programmation (voir ce site qui indique la popularité des langages au cours du temps). Parmi les avantages du langage Python, on peut citer :
\n","
\n","
facile à apprendre ; Python est devenu le langage privilégié pour l'enseignement de la programmation au niveau lycée partout dans le monde.
\n","
syntaxe simple et courte (cette simplicité engendre aussi certains défauts)
\n","
puissant, de haut niveau et polyvalent (réseau, images, interfaces graphiques, etc...)
\n","
très utilisé dans le domaine du \"Deep Learning\" et plus généralement de l'intelligence artificielle
\n","
\n","
Si le langage Python n'avait que des avantages, les autres langages concurrents auraient disparu. Le principal défaut de Python est sa relative lenteur par rapport à d'autres langages comme C/C++ ou Java. La vérification des types peut aussi poser quelques problèmes au niveau de la fiabilité des programmes (pas de compilation préalable donc détection de certaines erreurs au moment de l'exécution seulement) et de la maintenance. Enfin ce langage est peu adapté à la programmation sur smartphone.
\n"," Dans la suite vous devez exécuter les cellules de code Entrée[ ] en cliquant sur « Exécuter »"]},{"cell_type":"markdown","metadata":{},"source":["
\n","N'oubliez pas de sauvegarder régulièrement votre travail : cliquer sur le bouton tout en haut à gauche !
"]},{"cell_type":"markdown","metadata":{},"source":["Python permet d'effectuer tout type de calcul, comme une calculatrice ordinaire."]},{"cell_type":"code","execution_count":null,"metadata":{"scrolled":true,"trusted":false},"outputs":[],"source":["5 + 8"]},{"cell_type":"markdown","metadata":{},"source":["Les règles de priorité des calculs sont les mêmes qu'en mathématiques. On utilise des parenthèses lorsqu'on a besoin de changer l'ordre de priorité. Le symbole de la multiplication est * (afin qu'il n'y ait pas de confusion avec la lettre x)."]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 1 : Dans une école, il y a trois classes :
\n","
Classe A : 32 élèves
\n","
Classe B : 27 élèves
\n","
Classe C : 34 élèves
\n","
\n","Chaque élève de l'école doit recevoir 192 photocopies. \n","Combien faut-il prévoir de photocopies en tout ?\n","
"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["Une des particularités du langage Python est que le nombre de chiffres n'est pas limité pour les nombres entiers."]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 2 : Calculer le produit de deux nombres à 10 chiffres. \n","
"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["Pour calculer une puissance, on utilise la notation ** . Par exemple pour calculer 7 au carré, on écrira 7**2."]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 3 : Calculer 6 au cube de deux manières différentes : en utilisant une puissance et sans utiliser de puissance. \n","
Il existe deux types de division en Python : \n","
\n","
la division flottante avec l'opérateur /
\n","
la division entière avec l'opérateur //
\n","
\n","L'opérateur % permet d'obtenir le reste dans une division entière."]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["13/5"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["19/7"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["13//5"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["19//7"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["13%5"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["19%7"]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 4 : En utilisant les opérateurs précédents, écrire 437 secondes au format minutes:secondes.\n","
"]},{"cell_type":"markdown","metadata":{},"source":["Nombre de minutes :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["Nombre de secondes :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["
Les fonctions concernant les nombres aléatoires ne font pas partie des fonctions de base du langage Python. Pour pouvoir les utiliser, on doit commencer par donner l'accès à une bibliothèque de fonctions appelée random (\"random\" signifie \"aléatoire\") au moyen de l'instruction from random import randint.
"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["from random import randint\n","randint(2,9)"]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 5 : Simuler le lancer de deux dés et afficher la somme obtenue.\n","
"]},{"cell_type":"markdown","metadata":{},"source":["On rappelle que l'écriture scientifique d'un nombre décimal est de la forme $d \\times 10^{k}$ où $d$ est un nombre décimal positif ou négatif comportant un seul chiffre avant la virgule et $k$ est un entier positif ou négatif.\n","\n","Par exemple, l'écriture scientifique de $-0,0042$ est $-4,2 \\times 10^{-3}$.\n","\n","En Python, on peut utiliser l'écriture scientifique des nombres décimaux, par exemple $-4,2 \\times 10^{-3}$ s'écrit"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["-4.2e-3"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Exercice 5. Donner l'écriture scientifique en Python des nombres décimaux suivants et vérifier votre résultat.\n","
"]},{"cell_type":"markdown","metadata":{},"source":["Écriture scientifique de 227,52 :"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["Écriture scientifique de 0,000127 :"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["Le nombre $\\pi$ est défini dans la bibliothèque ou module math, il faut l'importer avant de pouvoir l'utiliser."]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"text/plain":["3.141592653589793"]},"execution_count":1,"metadata":{},"output_type":"execute_result"}],"source":["from math import pi\n","pi"]},{"cell_type":"markdown","metadata":{},"source":["De même, si on veut utiliser les racines carrées d'un nombre, il faut importer la fonction racine carrée **sqrt** du module math."]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from math import sqrt\n","sqrt(25)"]},{"cell_type":"markdown","metadata":{},"source":["
\n"," Exercice 6. Soit ABC un triangle rectangle en A avec AB = 5 et BC = 7. \n"," \n","
Donner une valeur approchée à $10^{-2}$ près de AC.
\n","
Donner une valeur approchée à $10^{-2}$ près de la circonférence du cercle de diamètre BC.
les flottants (float, abréviation de \"floating number\" qui signie \"nombre à virgule flottante\").
"]},{"cell_type":"markdown","metadata":{},"source":["La fonction type() indique le type du nombre qu'on lui donne en paramètre :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["type(5)"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["type(5.0)"]},{"cell_type":"markdown","metadata":{},"source":[""]},{"cell_type":"markdown","metadata":{},"source":["
La notion de variable est fondamentale en programmation
\n","On peut conserver ou stocker un nombre ou le résultat d'un calcul dans une variable qui peut être modifiée à tout moment."]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["a = 2 # on affecte la valeur 2 à la variable a - a prend la valeur 2 ou écriture pseido code a <- 2 \n","b = 5 # on affecte la valeur 5 à la variable b \n","c = a + b # on affecte la valeur de la valeur de la variable b à la variable c\n","a = 3 # on modifie la variable a\n","c # on affiche la valeur de c "]},{"cell_type":"markdown","metadata":{},"source":["Le contenu des variables persiste en mémoire :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["a"]},{"cell_type":"markdown","metadata":{},"source":["Afficher une variable qui n'a pas encore été définie ou déclarée provoque une erreur :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["d"]},{"cell_type":"markdown","metadata":{},"source":["
le nom d'une variable ne doit pas commencer par un chiffre
Une affectation en Python n'est pas une égalité mathématique : la ligne 2 suivante n'a pas de sens en mathématiques "]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["x=3 \n","x=x+5 # on affecte à x son ancienne valeur ajouté de 5 : x <- x+5 \n","x"]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 7 : Prévoir l'affichage final de cet algorithme puis éxécuter la cellule pour vérifier b= .....
Exercice 7 : On pourrait croire que cet algorithme échange le contenu des variables a et b ci-dessous. Prouver avec un tableau de trace des variables que ce n'est pas le cas
"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["a=7\n","b=4\n","a=b\n","b=a"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["a"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["b"]},{"cell_type":"raw","metadata":{},"source":[" ligne | a | b |\n"," 1 | 7 | NI | NI signifie Non Initialisée\n"," 2 | .. | .. |\n"," 3 | .. | .. |\n"," 4 | .. | .. |"]},{"cell_type":"markdown","metadata":{},"source":["Modifier alors le code pour échanger les valeurs des variables a et b"]},{"cell_type":"markdown","metadata":{},"source":[""]},{"cell_type":"markdown","metadata":{},"source":["
4- le type chaîne de caractères
"]},{"cell_type":"markdown","metadata":{"trusted":true},"source":["Une variable peut contenir une chaîne de caractères :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["nom =\"Bond\" # on affecte à la variable nom la valeur Bond\n","prenom=\"James\"\n","numero=7"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["type(nom)"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["nom"]},{"cell_type":"markdown","metadata":{},"source":["
on peut ajouter des chaines de caractère dans les arguments de la fonction print
\n","La chaîne de caractère que l'on souhaite afficher doit être écrite entre guillemets (simples ' double \" ou triples '''). "]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["print(\"je m'appelle\",nom,\"0 0\",numero)"]},{"cell_type":"markdown","metadata":{},"source":["On peut concaténer (fusionner) plusieurs chaînes de caractère au moyen de l'opérateur + :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["message1 = \"Bonjour \"\n","message2 = \"Madame\"\n","message3 = message1 + message2\n","print(message3)\n","message3 = message3 + \"!\" # la syntaxe abrégée fonctionne aussi pour la concaténation de chaînes de caractères\n","print(message3)"]},{"cell_type":"markdown","metadata":{},"source":["On ne peut pas concaténer une chaîne de caractères avec une valeur numérique directement. Il faut au préalable transformer la valeur numérique en chaîne de caractères au moyen de la fonction str() :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["âge = 25\n","début = \"J'ai \"\n","fin = \" ans.\"\n","phrase = début + âge + fin\n","print(phrase)"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["âge = 25\n","début = \"J'ai \"\n","fin = \" ans.\"\n","phrase = début + str(âge) + fin\n","print(phrase)"]},{"cell_type":"markdown","metadata":{},"source":["
Comme on peut le voir en exécutant les quatre cellules ci-dessous, des expressions comme 7>4 ou 8<2 ont une valeur d'un nouveau type appelé le type booléen.
\n","
Une variable booléenne ne peut prendre que deux valeurs : True ou False
\n","
True signifie \"Vrai\", False signifie \"Faux\".
\n","
Le mot \"booléen\" provient de George Boole (1815-1864), un mathématicien et logicien anglais qui a créé l'algèbre binaire, aujourd'hui appelée algèbre booléenne. Cette algèbre booléenne permet de traduire des raisonements logiques par des calculs algébriques.
"]},{"cell_type":"markdown","metadata":{},"source":["Voici les différents tests possibles : \n","
"]},{"cell_type":"markdown","metadata":{},"source":["On peut demander à l'utilisateur de saisir une valeur avec la fonction input(). On peut ajouter en paramètre facultatif un message qui donne des précisions sur la valeur attendue :"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["a = input() # on affecte à la variable a la valeur entrée par l'utilisateur\n","b = input(\"Entrez votre âge : \")"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["print(a)\n","print(b)\n","print(type(a))"]},{"cell_type":"markdown","metadata":{},"source":["
Attention : La valeur renvoyée par la fonction input() est du type chaîne de caractères (string).
\n","
Si on veut que la variable soit de type nombre, on doit d'abord convertir cette chaîne en entier avec la fonction int() ou en flottant avec la fonction float() à placer avant le input ."]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["age = int(input(\"Veuillez entre votre âge :\"))\n","age = age + 5\n","print(\"Dans 5 ans, vous aurez\",age,\"ans\")"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":false},"outputs":[],"source":["coté=float(input(\"Entrer en cm la longueur de carré\"))\n","perimetre=4*coté\n","print(\"le perimetre d'un carré de coté\",coté,\"est\",perimetre)"]},{"cell_type":"markdown","metadata":{},"source":["
Exercice 9 : Ecrire un programme qui demande à l'utilisateur d'entrer le la largeur et la longueur d'un rectangle et qui affiche son périmètre. \n","Le programme doit fonctionner pour des valeurs non entières , et devra afficher une phrase de réponse complète se terminant par un point.\n","
Exercice 10 : Ecrire un programme qui demande à l'utilisateur d'entrer 3 notes puis qui affiche la moyenne de ces 3 notes \n","Le programme doit fonctionner pour des valeurs non entières , et devra afficher une phrase de réponse complète se terminant par un point.\n","
Exercice 11 : Ecrire un programme qui demande à l'utilisateur d'entrer son prénom et son année de naissance et qui affiche par exemple : Bonjour Bob vous avez 25 ans. \n","
Exercice 12 : Ecrire un programme qui demande à l'utilisateur d'entrer un nombre entier d'heures et qui affiche le nombre de jours et d'heures par exemple : Dans 51 heures, il y a 2 jours et 3 heures\n","