Chapitre 1 Les bases de python 1.1 Hello World Voici le plus simple des program

Chapitre 1 Les bases de python 1.1 Hello World Voici le plus simple des programmes, le « Hello World », Nous allons profiter de cet exemple pour mettre en valeur la concision de l’écriture de code en Python. Nous souhaitons donc simplement afficher dans une console le message « Hello World ! ». En C, nous aurons besoin de six lignes : Hello word en C #include <stdio.h> int main(void) { printf("Hello world!\n "); return 0; } Il faudra bien sûr ensuite compiler et exécuter le programme : meilland@debian:~$ gcc −Wall hello.c meilland@debian:~$ a.out Hello llorld ! Cela représente beaucoup de travail pour un petit résultat ! Et encore, on peut faire encore plus long avec du Java : Hello word en java public class Hello { public static void main(string[] args) { System.out.println("Hello World!\n"); } } ici nous devons créer une classe et donc utiliser la programmation orientée objet pour afficher un simple message ! Et nous devons bien sûr passer par une étape de pré-compilation : login@serveur~$ javac Hellojava login@serveur~$ java Hello Hello World ! C’est toujours très long pour afficher un simple message. Voyons maintenant le code Python permettant d’obtenir le même résultat. À ce stade, nous utiliserons l’éditeur interactif en lançant 1 python dans un terminal, puis en tapant nos commandes Python. Pour commencer, en Python 3.2 nous entrerons le code : print("Hello World !") Oui, c’est tout et ça paraît logique puisque tout ce que je demande c’est l’affichage de ce message ! Le résultat de l’interprétation de cette commande dans l’interpréteur interactif est montré en figure 7. " « Hello World » en Python dans un interpréteur interactif" >>> print("Hello World !") Hello World ! Remarquez au passage l’absence de point-virgule en fin de ligne, contrairement au C, à Java et à bon nombre de langages. Maintenant que vous avez vu votre premier programme - ou script - en Python, certes court, mais programme quand même, je vous propose d’explorer les différents types de données manipulables en Python. 1.2 Les différents types de données Nous avons vu que Python était un langage fortement typé utilisant le duck typing pour dé- terminer le type des données. Pour tester les types présentes dans cette partie, vous pourrez utiliser l’interpréteur interactif. C’est d’ailleurs sous cette forme que je présenterai les différents exemples en faisant précéder les commandes des caractères » » » correspondant au prompt de l’interpréteur. Pour pouvoir travailler sur les types, nous aurons besoin de faire appel à une fonction : la fonction type(). Le rôle de cette fonction est d’afficher le type de l’élément qui lui est passé en paramètre. 1.2.1 Les données numériques Parmi les données manipulables, on va bien entendu pouvoir utiliser des nombres. Ceux-ci sont classes en quatre types numériques : • Entier : permet de représenter les entiers sur 32 bits (de −2147483648 à 2147483647). " « Hello World » en Python dans un interpréteur interactif" >>> type(2) <type 'int'> >>> type(2147483647) <type 'int'> Des préfixes particuliers permettent d’utiliser la notation octale (en base huit) ou hexadécimale (en base seize). Pour la notation octale, il faudra préfixer les entiers par le chiffre 0 en Python 2.7 et par 0o (le chiffre zéro suivi de la lettre « o » en minuscule) en Python 3.2. Par exemple, 12 en notation octale vaut 8+2=10 : " « Hello World » en Python dans un interpréteur interactif" >>> 0o12 10 Pour la notation hexadécimale, le préfixe sera le même que l’on soit sous Python 2.7 ou Python 3.2, ce sera 0x (le chiffre zéro suivi de la lettre « x » en minuscule). Ainsi, 12 en notation hexadécimale vaut 16+2=l8 : " « Hello World » en Python dans un interpréteur interactif" >>> 0x12 18 • Entier : On peut forcer un nombre ou texte en entier avec la fonction int() " « Hello World » en Python dans un interpréteur interactif" >>> type(int("16")) <class 'int'> • Flottant : pour les nombres flottants. Le symbole utilisé pour déterminer la partie décimale est le point. On peut également utiliser la lettre E ou e pour signaler un exposant en base 10 (101, 102, etc.). " « Hello World » en Python dans un interpréteur interactif" >>> type(3.14) <class 'float'> >>> 2e1 20.0 >>> type(2e1) <class 'float'> • Complexe : pour les nombres complexes qui sont représentés par leur partie réelle et leur partie imaginaire. En Python, la partie imaginaire sera logiquement suivie de la lettre J ou j. En informa- tique, on utilise souvent la variable i comme variable de boucle (dont nous parlerons par la suite), Pour éviter toute confusion, la partie imaginaire des complexes se note donc j. Voici comment écrire le complexe 2 + 3i : " « Hello World » en Python dans un interpréteur interactif" >>> 2+3j (2+3j) >>> type(2+3j) <class 'complex'> Revenons maintenant sur les flottants. l’interpréteur interactif peut être utilisé comme une cal- culette. Pour l’instant nous ne parlerons que des opérations élémentaires +,-,* et / auxquelles nous ajouterons le quotient de la division euclidienne noté et le reste de la division euclidienne noté %. Voici quelques exemples de calculs : " « Hello World » en Python dans un interpréteur interactif" >>> 3.14*2+1 7.28 >>> 3.14+5+2j (8.14+2j) >>> (1+1j)+(2-1j) (3+0j) Vous pouvez voir que la priorité des opérateurs est respectée et que les opérations entre nombres de typés différents sont gérées (par exemple l’ajout d’un flottant et d’un complexe produit un complexe). Au niveau du traitement de la division et de la division euclidienne, nous allons pouvoir noter des différences intéressantes entre Python 2.7 et Python 3.2. En effet, voici un exemple de tests de divisions en Python 2.7 : Division avec Python2.7 >>> 7/3 2 >>> 7./3. 2.3333333333333335 >>> 7//3 2 >>> 7%3 1 Les résultats dépendent du contexte ! Dans un contexte entier, la division donne pour résultat le quotient de la division euclidienne alors qu’elle se comporte normalement dans un contexte flottant. Effectuons les mêmes tests en Python 3.2 : Division avec Python3.2 >>> 7/3 2.3333333333333335 >>> 7.0/3. 2.3333333333333335 >>> 7//3 2 >>> 7%3 1 Les résultats paraissent ici logiques : 7/3 et 7.0/3.0 donnent le même résultat sous la forme d’un flottant et 7//3 a pour résultat 2 qui est bien le quotient de la division euclidienne de 7 par 3. Si vous utilisez les calculs en Python, l’usage de la division peut donc être source d’erreur et il faudra donc bien se souvenir de la version de Python employée. Mais il y a pire . . . et ce n’est pas l’apanage de Python. Le phénomène que je m’apprête à souligner est vrai pour absolument tous les langages, mais il est bien souvent oublié. Quel est le résultat d’une opération simple telle que ((0.7 + 0.1)*10) ? Vous pensez que le résultat est 8 ? Testons donc en Python : Listing – >>> ((0.7+0.1)*10) 7.999999999999999 On dirait qu’il y a un problème . . . En fait cela provient de la représentation des flottants en machine : ils sont arrondis [3] ! En Python, la solution consistera a utiliser un module spécial, le module Decimal [4]. Comme nous n’avons pas encore vu comment utiliser les modules, je ne m’étendrai pas sur ce problème, mais si vous manipulez des flottants pour des calculs précis, méfiez vous ! En dehors des opérateurs élémentaires, les éléments numériques peuvent être assignés à des variables a l’aide du signe =(variable = valeur) et il est possible d’effectuer une opération en utilisant l’ancienne valeur d’une variable à l’aide de +=, -=, *= et /= (variable += valeur équivaut à variable = variable + valeur). Voici un petit exemple : Listing – >>> a+=3 >>> a=2 >>> a 2 >>> a+=3 >>> a 5 Les opérateurs de pré- et de post- incrémentation ou décrémentation ++ ou – n’existent pas en Python. Par contre, vous avez la possibilité d’effectuer des affectations de variables multiples avec une même valeur : Listing – >>> a=b=1 >>> a 1 >>> b 1 Et vous pouvez également effectuer des affectations multiples de variables ayant des valeurs différentes en séparant les noms de variables et les valeurs par des virgules : Listing – >>> a, b=2, 3 >>> a 2 >>> b 3 Ce mécanisme peut paraître anodin, mais il permet de réaliser très simplement une permutation de valeurs sans avoir recours a une variable intermédiaire : Listing – >>> a=2 >>> b=3 >>> a,b=b,a >>> a 3 >>> b 2 Enfin, un opérateur intéressant pour enlever un nombre a une puissance quelconque : l’opérateur **. Listing – >>> 2**3 8 Après avoir vu les types numériques, voyons maintenant comment stocker des chaînes de carac- tères. 1.2.2 Les chaîne caractères Les chaînes de caractères sont encadrées par des apostrophes ou des guillemets. Le choix de l’un ou de l’autre n’a aucun impact au niveau des performances. La concaténation (assemblage de plusieurs chaînes pour n’en produire qu’une seule) se fait à l’aide de l’opérateur +. Enfin, l’opérateur * permet de répéter une chaîne. Voyons cela uploads/Finance/ cours-python.pdf

  • 47
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jui 09, 2022
  • Catégorie Business / Finance
  • Langue French
  • Taille du fichier 0.2338MB