Premiers pas

Calculer avec Python

  • Python peut être utilisé de plusieurs manières différentes :

    • en mode interactif : dialogue directement depuis le clavier,

      • découvrir très vite un grand nombre de fonctionnalités du langage,

    • programmes (scripts).

  • Interpréteur :

    • lancé directement depuis la ligne de commande (dans un « shell » Linux, ou bien dans une fenêtre DOS sous Windows) : taper la commande python3,

    • avec une interface graphique telle que Windows, Gnome, WindowMaker ou KDE : dans une « fenêtre de terminal ».

Lancement de Python3
  • Les trois caractères « supérieur à » >>> constituent le signal d'invite, ou prompt principal, lequel vous indique que Python est prêt à exécuter une commande.

Calculatrice en Python

Les commandes ci-dessous s'exécutent comme sur votre calculatrice de bureau :

>>> 5+3

>>> 2 – 9 # les espaces sont optionnels

>>> 7 + 3 * 4 # hiérarchie des opérations mathématiques est-elle respectée ?

>>> (7+3)*4

>>> 20 / 3 # attention : ceci fonctionnerait différemment sous Python2

>>> 20 // 3 # division entière

  • Les opérateurs arithmétiques pour l’addition, la soustraction, la multiplication et la division sont respectivement +, -, * et /. Les parenthèses ont la fonction attendue.

  • Sous Python3, l'opérateur de division / effectue une division réelle. Si vous souhaitez obtenir une division entière (c'est-à-dire dont le résultat - tronqué - ne peut être qu'un entier), vous devez utiliser l'opérateur //. Veuillez bien noter que ceci est l'un des changements de syntaxe apportés à la version 3 de Python, par rapport aux versions précédentes. Si vous utilisez l'une de ces versions, sachez que l'opérateur / effectue par défaut une division entière, si on lui fournit des arguments qui sont eux-mêmes des entiers, et une division réelle, si au moins l'un des arguments est un réel. Cet ancien comportement de Python a été heureusement abandonné car il pouvait parfois conduire à des bugs difficilement repérables.

>>> 20.5 / 3

>>> 8,7 / 5 # Pas le résultat attentu !

Veuillez remarquer au passage ce qui est la règle dans tous les langages de programmation, à savoir que les conventions mathématiques de base sont celles qui sont en vigueur dans les pays anglophones : le séparateur décimal y est donc toujours un point, et non une virgule comme chez nous. Notez aussi que dans le monde de l'informatique, les nombres réels sont souvent désignés comme des nombres « à virgule flottante » (floating point numbers).

Données et variables

Données et variables

  • L'essentiel du travail effectué par un programme d'ordinateur consiste à manipuler des données.

  • Ces données peuvent être très diverses (tout ce qui est numérisable, en fait), mais dans la mémoire de l'ordinateur elles se ramènent toujours en définitive à une suite finie de nombres binaires.

  • Pour pouvoir accéder aux données, le programme d'ordinateur (quel que soit le langage dans lequel il est écrit) fait abondamment usage d'un grand nombre de variables de différents types.

  • Une variable apparaît dans un langage de programmation sous un nom à peu près quelconque, mais pour l'ordinateur il s'agit d'une référence désignant une adresse mémoire, c'est-à-dire un emplacement précis dans la mémoire vive.

  • À cet emplacement est stockée une valeur bien déterminée. C'est la donnée proprement dite, qui est donc stockée sous la forme d'une suite de nombres binaires.

  • Cela peut être en fait à peu près n'importe quel « objet » :

    • un nombre entier,

    • un nombre réel,

    • un nombre complexe,

    • un vecteur,

    • une chaîne de caractères typographiques,

    • un tableau,

    • une fonction,

    • etc.

  • Pour distinguer ces divers contenus possibles les uns des autres, le langage de programmation fait usage de différents types de variables (le type entier, le type réel, le type chaîne de caractères, le type liste, etc.).

Noms de variable et mots réservés

Noms de variable

En Python, les noms de variables sont :

  • constitués une lettre suivi d'une lettre (a→z et A→Z) ou d'un chiffre (0→9) ou d'un blanc souligné (_),

  • sensibles à la casse (les caractères majuscules et minuscules sont distingués),

Les espaces et les caractères spéciaux tels que $, #, @, etc. sont interdits !

Noms de variables accentués

En python3 les caractères accentués et les cédilles sont autorisés.

Prenez l'habitude d'écrire l'essentiel des noms de variables en caractères minuscules (y compris la première lettre). Il s'agit d'une simple convention, mais elle est largement respectée. N'utilisez les majuscules qu'à l'intérieur même du nom, pour en augmenter éventuellement la lisibilité, comme dans tableDesMatieres, par exemple.

Mots réservés

Vous ne pouvez pas utiliser comme nom de variables les 33 « mots réservés » ci-dessous :

– 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

Affectation (ou assignation)

Affectation (ou assignation)

  • Les termes « affecter une valeur » ou « assigner une valeur » à une variable sont équivalents.

  • Ils désignent l'opération par laquelle on établit un lien entre le nom de la variable et sa valeur (son contenu).

  • En Python comme dans de nombreux autres langages, l'opération d'affectation est représentée par le signe égal : =

>>> n = 7

>>> msg = "Quoi de neuf ?"

>>> pi = 3.14159

  • Cela correspond à plusieurs opérations dans la mémoire de l'ordinateur :

    • créer et mémoriser un nom de variable,

    • lui attribuer un type bien déterminé,

    • créer et mémoriser une valeur particulière,

    • établir un lien (par un système interne de pointeurs) entre le nom de la variable et l'emplacement mémoire de la valeur correspondante.

  • Les trois noms de variables sont des références, mémorisées dans une zone particulière de la mémoire que l'on appelle espace de noms, alors que les valeurs correspondantes sont situées ailleurs, dans des emplacements parfois fort éloignés les uns des autres.

Afficher la valeur d'une variable

  • Nous disposons donc des trois variables n, msg et pi.

  • Pour afficher leur valeur à l'écran, il existe deux possibilités :

    • la première consiste à entrer au clavier le nom de la variable, puis <Enter>. Python répond en affichant la valeur correspondante :

      >>> n

      7

      >>> msg

      'Quoi de neuf ?'

      >>> pi

      3.14159

    Il s'agit cependant là d'une fonctionnalité secondaire de l'interpréteur, qui est destinée à vous faciliter la vie lorsque vous faites de simples exercices à la ligne de commande.

    • À l'intérieur d'un programme, vous utiliserez toujours la fonction print() :

      >>> print(msg)

      Quoi de neuf ?

      >>> print(n)

      7

    Remarquez la subtile différence dans les affichages obtenus avec chacune des deux méthodes :

    • la fonction print() n'affiche strictement que la valeur de la variable, telle qu'elle a été encodée,

    • l'autre méthode (celle qui consiste à entrer seulement le nom de la variable) affiche aussi des apostrophes afin de vous rappeler que la variable traitée est du type « chaîne de caractères ».

Typage des variables

Typage des variables

  • 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 vous suffit en effet d'assigner une valeur à un nom de variable pour que celle-ci soit automatiquement créée avec le type qui correspond au mieux à la valeur fournie.

  • Dans l'exercice précédent, par exemple, les variables n, msg et pi ont été créées automatiquement chacune avec un type différent (« nombre entier » pour n, « chaîne de caractères » pour msg, « nombre à virgule flottante » (ou « float », en anglais) pour pi).

  • Ceci constitue une particularité intéressante de Python, qui le rattache à une famille particulière de langages où l'on trouve aussi par exemple Lisp, Scheme, et quelques autres :

    • 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.

Affectations multiples

Affectations multiples

Sous Python, on peut assigner une valeur à plusieurs variables simultanément :

>>> x = y = 7

>>> x

7

>>> y

7

On peut aussi effectuer des affectations parallèles à l'aide d'un seul opérateur :

>>> a, b = 4, 8.33

>>> a

4

>>> b

8.33

Les francophones que nous sommes avons pour habitude d’utiliser la virgule comme séparateur décimal, alors que les langages de programmation utilisent toujours la convention en vigueur dans les pays de langue anglaise, c’est-à-dire le point décimal. La virgule, quant à elle, est très généralement utilisée pour séparer différents éléments (arguments, etc.) comme on le voit dans notre exemple, pour les variables elles-mêmes ainsi que pour les valeurs qu’on leur attribue.

Opérateurs et expressions

Opérateurs et expressions

On manipule les valeurs et les variables qui les référencent en les combinant avec des opérateurs pour former des expressions.

a, b = 7.3, 12

y = 3*a + b/5

  • Dans cet exemple :

    • nous commençons par affecter aux variables a et b les valeurs 7,3 et 12. Python assigne automatiquement le type « réel » à la variable a, et le type « entier » à la variable b,

    • la seconde ligne de l'exemple consiste à affecter à une nouvelle variable y le résultat d'une expression qui combine les opérateurs * , + et / avec les opérandes a, b, 3 et 5.

  • Les opérateurs sont les symboles spéciaux utilisés pour représenter des opérations mathématiques simples, telles l'addition ou la multiplication.

  • Les opérandes sont les valeurs combinées à l'aide des opérateurs.

  • Python évalue chaque expression qu'on lui soumet, aussi compliquée soit-elle, et le résultat de cette évaluation est toujours lui-même une valeur. À cette valeur, il attribue automatiquement un type, lequel dépend de ce qu'il y a dans l'expression.

  • Dans l'exemple ci-dessus, y sera du type réel, parce que l'expression évaluée pour déterminer sa valeur contient elle-même au moins un réel.

  • Les opérateurs Python ne sont pas seulement les quatre opérateurs mathématiques de base. Nous avons déjà signalé l'existence de l'opérateur de division entière //. Il faut encore ajouter l'opérateur ** pour la puissance, ainsi qu'un certain nombre d'opérateurs logiques, des opérateurs agissant sur les chaînes de caractères, des opérateurs effectuant des tests d'identité ou d'appartenance, etc.

  • Signalons au passage la disponibilité de l'opérateur modulo, représenté par le caractère typographique %. Cet opérateur fournit le reste de la division entière d'un nombre par un autre.

>>> 10 % 3

>>> 10 % 5

  • Cet opérateur vous sera très utile plus loin, notamment pour tester si un nombre a est divisible par un nombre b. Il suffira en effet de vérifier que a % b donne un résultat égal à 0.

Priorité des opérations

Lorsqu'il y a plus d'un opérateur dans une expression, l'ordre dans lequel les opérations doivent être effectuées dépend de règles de priorité. Sous Python, les règles de priorité sont les mêmes que celles qui vous ont été enseignées au cours de mathématique. Vous pouvez les mémoriser aisément à l'aide d'un « truc » mémotechnique, l'acronyme PEMDAS :

  • P pour parenthèses. Ce sont elles qui ont la plus haute priorité. Elles vous permettent donc de « forcer » l'évaluation d'une expression dans l'ordre que vous voulez,

  • E pour exposants. Les exposants sont évalués ensuite, avant les autres opérations,

  • M et D pour multiplication et division, qui ont la même priorité. Elles sont évaluées avant l'addition A et la soustraction S, lesquelles sont donc effectuées en dernier lieu.

Si deux opérateurs ont la même priorité, l'évaluation est effectuée de gauche à droite.

Composition

  • Jusqu’ici nous avons examiné les différents éléments d’un langage de programmation, à savoir : les variables, les expressions et les instructions, mais sans traiter de la manière dont nous pouvons les combiner les unes avec les autres.

  • Or l'une des grandes forces d'un langage de programmation de haut niveau est qu'il permet de construire des instructions complexes par assemblage de fragments divers. Ainsi par exemple, si vous savez comment additionner deux nombres et comment afficher une valeur, vous pouvez combiner ces deux instructions en une seule :

>>> print(17 + 3)

20

  • Cela n’a l’air de rien, mais cette fonctionnalité qui paraît si évidente va vous permettre de programmer des algorithmes complexes de façon claire et concise.

>>> h, m, s = 15, 7, 34

>>> print("nombre de secondes écoulées depuis minuit = ", h*3600 + m*60 + s)

Il y a une limite à ce que vous pouvez combiner ainsi...

Dans une expression, ce que vous placez à la gauche du signe égal doit toujours être une variable, et non une expression.

Cela provient du fait que le signe égal n'a pas ici la même signification qu'en mathématique : il s'agit d'un symbole d'affectation (nous plaçons un certain contenu dans une variable) et non un symbole d'égalité.

  • Ainsi par exemple, l'instruction  m + 1 = b  est tout à fait illégale.

  • Par contre, écrire  a = a + 1 est inacceptable en mathématique, alors que cette forme d'écriture est très fréquente en programmation. L'instruction a = a + 1 signifie en l'occurrence « augmenter la valeur de la variable a d'une unité » (ou encore : « incrémenter a »).

AccueilProgrammation en Python > Premiers pas< PrécédentSuivant >