Premiers pas
Retour au sommaire
Introduction
- SourceÀ ce stade là, vous devez vous être assuré du bon fonctionnement de Python sur votre ordinateur. Pour écrire nos programmes et les tester, nous utiliserons l'IDE fourni avec Python, nommé IDLE. Il est relativement basique, mais bien suffisant pour nos besoins.
Lancez IDLE. Vous le trouverez dans le répertoire Python\Lib\idlelib : utilisez le fichier idle.bat . La fenêtre qui s'affiche (éventuellement au bout de quelques secondes) est le shell Python. C'est une ligne de commande acceptant des instructions écrites dans le langage Python, ce qui est très pratique pour tester des instructions simples, réaliser de petits calculs, ou utiliser des modules déjà existants sans écrire de script entier.
Mais pour l'instant nous n'utiliserons pas cette opportunité. Dans le menu File d'IDLE, choisissez la commande New Window. Un nouveau document vierge apparaît sur votre écran, attendant que vous écriviez vos premières lignes de Python. Comme c'est excitant !
Premières notions de syntaxe
- SourceDans cette nouvelle fenêtre, écrivez le code
print("Salut les Zéros !")
puis enregistrez votre fichier sous un nom de votre choix (en ajoutant ".py" à la fin, par exemple exemple1.py), et faites F5. Votre programme est alors lancé dans la première fenêtre, et vous voyez s'afficher quelque chose comme_
>>> Salut les Zéros ! >>>
Ne prêtez pas attention aux >>> : ce sont des prompteurs, qui attendent en temps normal les commandes Python. Ici ils ne servent à rien, nous verrons plus tard comment exécuter nos programmes dans des fenêtres indépendantes. Pour l'instant, parlons un petit peu du code._
Python est un langage dit impératif, comme le C, le C++, le Java ou le PHP (et bien d'autres). Il découpe le code en instructions, qui sont des ordres que l'on donne à l'ordinateur. En l'occurrence, l'ordre donné est d'afficher le message "Salut les Zéros !". Il y a plusieurs choses à dire sur cette ligne._ _ Premièrement, elle commence par le mot print, qui est ce que l'on appelle une fonction. Une fonction est un objet du langage chargé de remplir un certain rôle, par exemple afficher du texte. Naturellement, pour pouvoir afficher un message, il faut passer ce message à la fonction print. Ceci se fait par l'intermédiaire des parenthèses : écrire
f(blabla)
consiste à appeler la fonction f en lui passant l'objet blabla pour qu'elle l'utilise. On dit alors que blabla est un argument de f. Dans notre exemple, l'argument de print est le message "Salut les Zéros !"._
Dans ma phrase précédente, pour délimiter le message à afficher, j'ai utilisé des guillemets. C'est la même chose en Python : toutes les données textuelles sont entourées de guillemets qui servent à les distinguer du code. Nous y reviendrons plus en détail._
Lorsque vous exécutez votre programme, Python l'analyse, et même si c'est un petit peu plus compliqué en réalité, on peut considérer qu'il le lit ligne après ligne en exécutant l'instruction représentée. Un programme Python n'est rien d'autre qu'une liste d'ordres que vous donnez à la machine._
La fonction print est capable d'afficher d'autres éléments que du texte. Nous verrons qu'il y a différents types de données que nous pouvons utiliser dans nos programmes Python, chacun ayant son rôle à jouer. Notamment, Python est capable de réaliser des calculs à l'aide de nombres entiers (c'est à dire sans virgule) ou décimaux (avec une virgule), et des opérateurs habituels : +, -, * (produit), / (division) et ** (puissance). Essayez plutôt
print(12*3) print(17.65-4.002*2, 2**2) print("Un gros nombre :", 999**100)
Comme vous pouvez le constater, les arguments de print peuvent aussi bien être des nombres (ici, les expressions mathématiques que nous écrivons sont calculées, puis affichées). De plus, on peut passer plusieurs arguments à print, en les séparant par une virgule. Ils seront alors affichés sur la même ligne, séparés par un espace. Enfin, Python gère très bien les gros nombres, comme le dernier affichage le prouve.
Les programmes écrits en ligne de commande sont capables d'afficher du texte, mais aussi de demander à l'utilisateur de saisir un message, un nombre, bref un paramètre quelconque. Le moyen le plus simple de lire du texte entré par l'utilisateur en Python est d'utiliser la fonction input, qui lit une ligne écrite au clavier (c'est à dire qu'elle s'arrête de lire dès que l'utilisateur appuie sur la touche "entrée").
Nous pourrions par exemple écrire
print("Entrez votre nom :") input()
mais alors notre programme lirait la ligne entrée par l'utilisateur, puis l'oublierait aussitôt, faute de moyen de la stocker. Il faut utiliser une construction du langage appelée les variables : c'est une façon de donner de la mémoire à un programme, en associant un nom et un résultat (le résultat d'un calcul, ou bien quelque chose qui a été lu au clavier, etc.). En Python, on utilise les variables en écrivant
nom = résultat à retenir
Le programme suivant vous aidera à comprendre :
print("Entrez votre nom :") nom = input() print("Vous vous appelez", nom, ".")
Les variables sont appelées ainsi parce que leur valeur est inconnue au lancement du programme. Ici, nous ne pouvons pas prédire ce que l'utilisateur va rentrer lorsqu'on lui demande son nom. Il nous faut donc donner un nom à cette entrée pour la manipuler de façon abstraite, sans savoir encore ce que cela va être.
Cela marche aussi avec des calculs. Il est parfaitement autorisé d'écrire
rayon = 3 pi = 3.14 aire = pi * rayon**2 print(aire)
et même si ce code de 4 lignes pourrait être réécrit en une seule, il est nettement plus lisible comme ça.
Les données ont des types
- SourceNous l'avons vu, Python nous permet de manipuler simplement des nombres décimaux ou entiers, ainsi que des bouts de texte, qui sont appelés "chaînes de caractères". Même si les deux premiers peuvent être utilisés conjointement dans de mêmes calculs (cf. exemple précédent), il ne vous viendrait pas à l'idée d'additionner un bout de texte et un nombre entier : cela n'aurait aucun sens. D'ailleurs, si vous essayez de le faire, Python ne comprendra pas et vous signalera une erreur (vous pouvez tester directement dans la ligne de commande pour le constater).
Cette erreur vient du fait que les objets que nous tentons d'additionner ne sont pas compatibles. On dit qu'ils n'ont pas le même type. Il est possible d'additionner des entiers entre eux, cela a un sens mathématique. Nous ne l'avons pas remarqué encore, mais il est également possible d'additionner des chaînes de caractères entre elles - on parle en réalité de concaténation, cela consiste à ajouter une chaîne à la suite de l'autre (nous reviendrons sur ce point). Mais un mélange des deux, non. Cela aurait aussi peu de sens que d'additionner des mètres et des degrés Celsius.
Le type d'une donnée représente donc les opérations qu'elle est susceptible de supporter, et permet de distinguer différentes familles de données : les chaînes de caractères d'un côté, les entiers d'un autre, les décimaux ailleurs... Nous y reviendrons plus tard pour mieux définir ce concept, mais ces trois types sont, en Python, définis par trois classes distinctes : les chaînes de caractères sont de type str (on dit qu'elles appartiennent à la classe str), les entiers de type int, et les décimaux de type float.
Lorsqu'il manipule les données que nous lui demandons de manipuler, Python connaît leur type et peut déterminer quelles opérations elles supportent. C'est une caractéristique importante qu'elles portent en elles. Malheureusement, cette information n'est connue que pendant l'exécution de nos programmes, pas avant (pour certains langages il en va tout autrement). Nous avons vu que la fonction input lit une chaîne de caractères qui peut par la suite être stockée dans une variable. Mais comment pouvons-nous faire pour lire un nombre à la place, par exemple pour demander son âge à l'utilisateur ?
Il faut convertir la chaîne de caractère lue en un nombre exploitable, grâce à la fonction int. Ce n'est pas exactement une fonction, comme nous l'avons dit il faudrait plutôt l'appeler "classe". Mais pour l'instant, cela fait peu de différence pour nous.
print("Entrez votre âge :") âge = int(input()) print("Encore", 18-âge, "ans avant la majorité !")
Les lignes 1 et 3 ne devraient pas vous surprendre. La deuxième par contre mérite un petit commentaire. Il faut la décomposer en trois étapes : d'abord, la fonction input est appelée, elle lit une entrée et renvoie une chaîne (par exemple "15"). Ensuite, int reçoit l'argument "15" et le transforme en 15. Enfin, ce 15 est stocké dans la variable âge.
On aurait pu écrire à la place
print("Entrez votre âge :") âge = input() âge = int(âge) print("Encore", 18-âge, "ans avant la majorité !")
où les opérations sont plus simples à décomposer. Notez que l'on peut associer âge à la valeur renvoyée par input, puis à celle renvoyée par int. En Python, les variables n'étant que des noms associés à des valeurs, elles n'ont pas de type particulier. Ainsi, la variable âge peut contenir une chaîne de caractères /puis/ un nombre sans que Python ne se plaigne.
Il est important que vous compreniez comment fonctionnent ces deux derniers codes. Pour cela, raisonnez en termes d'instructions, en découpant l'exécution de ce programme pas à pas. Notez que si vous avez besoin d'un nombre décimal plutôt que d'un nombre entier, vous pouvez remplacer int par float. De même, quand nous aurons besoin d'utiliser des chaînes de caractères, nous utiliserons str.
Exercice :
- Ecrivez un programme qui demande à l'utilisateur son nom puis son âge, et qui affiche un message adéquat utilisant les deux informations.
- Utilisez le shell Python pour effectuer les calculs suivants :
- 143 fois 45 plus 2
- 43 divisé par 2 (qu'observez-vous ?)
- 15 au carré
- On rappelle que la racine carrée d'un nombre peut-être obtenue comme étant la puissance 1/2 d'un nombre. Par exemple 4**(1/2) vaut 2 (ou plus exactement en Python le décimal 2.0). Ecrivez un programme qui demande à l'utilisateur les deux petits côtés d'un triangle rectangle, et qui renvoie la valeur de l'hypothénuse. Exemple d'exécution : Entrez la valeur des deux petits côtés, un par ligne : 3_ 4_ L'hypothénuse vaut 5.0 ._