Systèmes Numériques S.I.N PYTHON Classe : TSTI2D Règles de bases 1 Règles de bases du Python: La syntaxe concerne les règles d'écriture à respecter . En langage C ou Arduino vous avez dû apprendre la syntaxe de base suivante : ➢ Terminer une ligne par un point-virgule ; ➢ Terminer les instructions par un point-virgule ; ➢ Encadrer les sections de code (boucle, condition, fonction, .. ) par des accolades : une de début { et une de fin } { // début section de code instructions ; } // fin section de code En Python : La structuration du code se fait à l'aide de l'indentation réalisée avec des tabulations (et pas des espaces!!!) : ➢ Toutes les instructions qui se suivent ayant la même indentation sont considérées comme faisant partie du même niveau ➢ Un retour d'indentation est considéré comme une « élévation » au niveau précédent ➢ Une nouvelle indentation crée un sous-niveau dans le niveau courant. /10 1.1 Comparatif avec d'autres langages /10 1.2 Premier pas avec l’interpréteur ➢ Lancez Pyscrypter 1.2.1 Les opérateurs : ➢ Nous allons maintenant dialoguer avec cet interpréteur Python : tapez les instructions de la colonne de gauche et écrivez les résultats obtenus (les réponses de l'interpréteur), dans la /10 colonne de droite, en commentant éventuellement (essayez de prévoir la réponse et, si elle est différente, de comprendre pourquoi la réponse qui vous paraît logique n'a pas été celle de l'ordinateur). Pour vous aider, vous avez le cours suivant ….courspython3.pdf page 21…. Instruction à taper Résultat obtenu et commentaire(s) ou explication(s) 20+1 20/3 20//3 20%3 5.45*10 2**4 (3+2)*5 3+2*5 20/0 20@3 "bonjour"/3 "bonjour" + 5 (3+2))*5 (3+2*5 Astuce : pour éviter d'avoir à retaper toute une ligne, utilisez la flèche “haut” du clavier pour vous positionner sur cette ligne, puis tapez “Entrée” : la ligne est recopiée après l'invite de commande et vous pouvez la modifier avant de taper à nouveau “Entrée”. ………………………………………………………. ………………………………………………………. ………………………………………………………. ………………………………………………………. ………………………………………………………. 1.2.2 Les types de données. Booléens : Les booléens comme dans tout langage peuvent prendre deux valeurs uniquement. En PYTHON, ces valeurs sont True et False. >>> mon_booleen = True >>> mon_booleen True /10 Integer L'entier/Integer est un nombre sans virgule. Il est codé sur quatre octets et sa valeur peut s'étendre de -2 147 483 648 à +2 147 483 647. >>> mon_integer = 56321 >>> mon_integer 56321 Long (Python2) Ce type de valeur entière n'a comme limite que la capacité mémoire de l'ordinateur >>> mon_long = 2147483648 >>> mon_long 2147483648L Float Le type float utilisé permet de manipuler des nombres (positifs ou négatifs) compris entre 10-308 et 10308 avec une précision de 12 chiffres significatifs. Ces nombres sont encodés d'une manière particulière sur 8 octets (64 bits) dans la mémoire de la machine : une partie du code correspond aux 12 chiffres significatifs, et une autre à l'ordre de grandeur (exposant de 10). Attention : le caractère de séparation est le point et non la virgule. >>> mon_float = 3.5632 >>> mon_float 3.5632 String (chaîne de caractères) Une donnée de type string est une suite quelconque de caractères délimitée soit par des apostrophes (simple quotes), soit par des guillemets (double quotes). >>> phrase1 = 'le Luma ?' >>> phrase2 = '"Yes", of course !!!' >>> phrase3 = "Savez-vous cuire " >>> print (phrase3, phrase1, phrase2) Savez-vous cuire le Luma ? "Yes", of course !!! Pour connaître le type d'une donnée, on utilise la méthode type() Instruction à taper Résultat obtenu et commentaire(s) ou explication(s) type(3) type(1.5) type("Jojo") /10 type('Le luma') type("3") type(3+1.5) type(12345678901234567890123456789 0123456789) 1.2.3 Les messages d'erreurs L'étude des messages d'erreurs est fondamental. Instruction à taper Résultat obtenu et commentaire(s) ou explication(s) 20/0 20@9 "bonjour"/7 "bonjour" + 5 (3+2))*98 (3+2*55 ………………………………………………… ………………………………………………… ………………………………………………… 1.2.4 Le transtypage (cast) On peut parfois avoir besoin de transformer une donnée d'un certain type, en une donnée d'un autre type. Cela s'appelle le transtypage (ou cast en anglais). Donnée de départ De quel type est la donnée de départ ? Instruction(s) à taper 3.0 int(3.0) 3.5 int(3.5) 3 float(3) 4 str(4) ''3'' int(''3'') ''3.5'' float(''3.5'') ''3.5'' int(''3.5'') ''Jojo le luma '' int(''Jojo le luma '') Type du résultat obtenu et/ou commentaire(s) /10 2 Les variables et l'affectation 2.1 Affectation Il peut être pratique de ranger les données dans des contenants, aussi appelés variables, afin de les conserver dans la mémoire de l'ordinateur pour les utiliser plus tard. Le rangement d'une donnée (un contenu) dans une variable (un contenant) s'appelle l'affectation. L'affectation se fait grâce à l'opérateur = qui s'appelle l'opérateur d'affectation. L'affectation se fait en deux temps : (1) évaluation (c'est à dire calcul) de la partie à droite de l'opérateur d'affectation (selon des règles de priorité de calcul correspondant au type des données concernées). Le résultat de cette évaluation est la donnée (le contenu) qui va être rangée dans la variable. (2) rangement du résultat de cette évaluation dans la partie à gauche de l'opérateur d'affectation. Cette partie à gauche est la variable (le contenant). Attention !!! Affecter n’est pas comparer ! L’affectation a un effet (elle modifie l’état interne du programme en cours d’exécution) mais n’a pas de valeur (on ne peut pas l’utiliser dans une expression) : >>> a = 2 >>> x = (a = 3) + 2 SyntaxError: invalid syntax La comparaison a une valeur utilisable dans une expression mais n’a pas d’effet : >>> x = (a == 3) + 2 >>> x 2 Instruction à taper Quelle est la variable ? Quelle est la donnée (ou est le résultat de l'évaluation de la partie droite) ? De quel type est cette donnée (ou ce résultat) ? age=77 age=22 prenom='Jojo' /10 taille_en_m= 1.22 taille_en_cm=taille_en_m*100 age=age + 3 phrase1= 'bonjour' + 'le' + prenom phrase1=phrase1 + '!' phrase2=prenom + ' a' + str(age) + ' ans.' age Remarque : le langage Python permet de faire plusieurs affectations à la fois, séparées par des virgules sur une seule ligne. Exemple d'une telle affectation multiple : >>> nom,prenom,age,etudiant="Student","Joe",20,True 2.1.1 Donner des noms aux variables Un nom de variable doit : ➢ Débuter par une lettre minuscule. ➢ Contenir uniquement des lettres sans accents, des chiffres et le tiret de soulignement _ (appelé tiret “underscore” ou encore “tiret du 8”). ➢ Être aussi explicite que possible (ne pas utiliser de noms trop courts et sans signification comme a, b, x, y, n, mais utiliser plutôt age, longueur, nombre, somme...) Le langage Python fait la distinction entre les majuscules et les minuscules. (casse) ➢ Il est possible (voir conseiller d'utiliser le « format chameau » par exemple : jojoLeLuma Les mots clés réservés du langage ne peuvent pas être utilisés comme nom de variables (car ils sont déjà “réservés” par le langage). Ce sont : and as assert break class continue def del elif else except False finally for from global if import in is lambda None nonlocal not or pass raise return True try while with yield Exercice : Échangez la valeur de 2 variables ; écrire (sur papier) un algorithme pour échanger les valeurs de 2 variables que vous nommerez var1 et var2. Testez avec votre interpréteur python. ………………………………………………….. ………………………………………………….. ………………………………………………….. 2.1.2 Typage des variables sous Python Sous Python, il n'est pas nécessaire d'écrire des lignes de programme spécifiques pour définir le type des variables, avant de pouvoir les utiliser ; il suffit d'assigner une valeur à un nom de variable pour que celle-ci soit automatiquement créée avec le type qui correspond au mieux à la /10 valeur fournie. Ceci constitue une particularité intéressante de Python, qui le rattache à une famille particulière de langages. On dira à ce sujet que le typage des variables sous Python est un typage dynamique, par opposition au typage statique qui est de règle par exemple en C++ ou en Java. Dans ces langages, il faut toujours, par des instructions distinctes, d'abord déclarer (définir) le nom et le type des variables, et ensuite seulement leur assigner un contenu, lequel doit bien entendu être compatible avec le type déclaré. Le typage statique est préférable dans le cas des langages compilés, parce qu'il permet d'optimiser l'opération de compilation (dont le résultat est un code binaire « figé »).Le typage dynamique quant à lui permet d'écrire plus aisément des constructions logiques de niveau élevé (métaprogrammation, réflexivité), en particulier dans le contexte de la programmation orientée objet (polymorphisme). Il facilite également l'utilisation de structures de données très riches telles que les listes et les dictionnaires. 3 Les variables et les opérateurs logiques Le type booléen ou bool est un type de données. Un booléen ne peut prendre que 2 valeurs : vrai (True) ou faux (False). NB : Les majuscules sont importantes : true et false ne sont pas reconnues par le programme, il faut écrire True et False. Les opérateurs qui s'appliquent aux booléens s'appellent opérateurs logiques. Ce sont : not (NON), and (ET), or (OU). D'autres opérateurs s'appliquent à des données numériques ou chaînes de caractères et produisent un résultat booléen : ce sont les opérateurs de comparaison : = = signifie “est égal à” != signifie “est différent de” < , <= , > , >= signifient “est inférieur, inférieur ou égal, supérieur, supérieur ou égal” . Ces opérateurs permettent de faire des tests. Le résultat de l'opération est True si le test est vrai, False si le test est faux. Instruction à taper Résultat obtenu et commentaire(s) ou explication(s) 1 == 1 1 == 3 1 != 3 1 == 1.0 (3+7) == (5*2) (1 == 1) and (2<2) (1 == 1) and (2<=2) (2 == 15) or (3>2) 1 < 4 < 15 valeur = (1==1) type(valeur) not(valeur) True and False /10 True or False Les tables de vérité de “ not ”, “ and ”, “ or ” Les opérateurs logiques not, and, or, opèrent de la façon suivante : soient A et B des propositions. “ non A ” est vrai ⇔A est faux “ non A ” est faux ⇔A est vrai “ A et B ” est vrai ⇔(A est vraie) et (B est vraie) “ A et B ” est faux ⇔(A est fausse) ou (B est fausse) “ A ou B ” est vrai ⇔(A est vraie) ou (B est vraie) “ A ou B ” est faux ⇔(A est faux) et (B est faux) 4. Points clés à retenir et questionnement. ➢ Quels sont les types de données de Python? ➢ Qu'est-ce que le transtypage ? ➢ Quelles sont les opérateurs arithmétiques et logiques de Python? Notre activité s'arrête ici …. /10