Chap2 P2
Chap2 P2
Chap2 P2
Opérations
2.4.1. Opérations sur les types numériques
Les opérateurs arithmétiques sont utilisés pour effectuer des opérations mathématiques comme
des additions, soustractions, multiplication, division etc. entre différentes variables contenant
des valeurs numériques.
Python reconnait et accepte les opérateurs arithmétiques suivants :
Opérateur Nom
+ Addition
– Soustraction
* Multiplication
/ Division
% Modulo Reste d’une division entière
** Puissance
// Division entière
Exemple :
>>> x = 45
>>> x + 2
47
>>> y = 2.5
>>> x + y
47.5
>>> (x * 10) / y
180.0
Remarquez toutefois que si vous mélangez les types entiers et réels, le résultat est renvoyé
comme un réel (car ce type est plus général). Par ailleurs, l’utilisation de parenthèses permet de
gérer les priorités.
Le modulo (%) correspond au reste d’une division Euclidienne (division entière) tandis que
L’opérateur (//) permet d’obtenir le résultat entier d’une division (ou la partie entière de ce
résultat pour être tout à fait exact).
Le résultat de 13//3, par exemple, sera 4 tandis que le résultat de 13%3 sera 1 car dans le cas
d’une division entière 13/3 = 4 avec reste = 1.
>>> 13//4
3
>>> 13%4
1
Les opérateurs de chaines vont nous permettre de manipuler des données de type str (chaines
de caractères) et par extension des variables stockant des données de ce type.
L’opérateur de concaténation +
L’opérateur de répétition *
Ces deux symboles remplissent donc un rôle relativement similaire que lorsqu’ils sont utilisés
avec des données de type numériques mais attention tout de même de ne pas confondre le +
utilisé pour additionner deux nombres et le + utilisé pour concaténer deux chaines de
caractères : on distingue ici bien deux opérateurs différents même si le même symbole est
utilisé.
Exemple :
>>> chaine = "Salut"
>>> chaine
'Salut'
>>> chaine + " Python"
'Salut Python'
>>> chaine * 3
'SalutSalutSalut'
Attention : Vous voyez que les opérateurs + et * se comportent différemment selon s’il s’agit
d’entiers ou de chaînes de caractères : 2 + 2 est une addition, '2' + '2' est une concaténation. On
appelle ce comportement surcharge des opérateurs.
Attention à ne pas faire d’opération illicite car vous obtiendriez un message d’erreur :
>>> 'toto' + 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
Notez que Python donne le maximum d’information dans son message d’erreur. Dans
l’exemple précédent, il vous indique que vous ne pouvez pas mélanger des objets de type str
(string, donc des chaînes de caractères) avec des objets de type int (donc des entiers), ce qui est
assez logique.
Nous connaissons déjà bien l’opérateur d’affectation simple Python =. Cet opérateur permet
d’affecter ou d’assigner une valeur à une variable.
Python reconnait également des opérateurs d’affectation qu’on appelle “composés” et qui vont
nous permettre d’effectuer deux opérations à la suite : une première opération de calcul suivie
immédiatement d’une opération d’affectation.
Ces opérateurs vont donc nous permettre de réduire la taille de notre code en nous offrant une
écriture simplifiée. Voici la liste des opérateurs d’affectation supportés par Python et leur
équivalent en “version longue” :
Faites bien attention, car pour Python, la valeur 2 (nombre entier) est différente de 2.0 (nombre
réel), de même que 2 (nombre entier) est différent de '2' (chaîne de caractères).
Toute conversion d’une variable d’un type en un autre est appelé casting en anglais, il se peut
que vous croisiez ce terme si vous allez consulter d’autres ressources.
On verra l’une des importances de cette conversion au Chapitre sur les fichiers. En effet,
lorsqu’on lit ou écrit des nombres dans un fichier, ils sont considérés comme du texte.
2.9. Affichage
2.9.1. La fonction print()
Dans le chapitre 1, nous avons rencontré la fonction print() qui affiche une chaîne de
caractères. En fait, la fonction print()affiche l'argument qu'on lui passe entre
parenthèses et un retour à ligne. Ce retour à ligne supplémentaire est ajouté par défaut. Si
toutefois, on ne veut pas afficher ce retour à la ligne, on peut utiliser l'argument par « mot-
clé » end :
>>> print("Hello world!")
Hello world!
>>> print("Hello world!", end="")
Hello world!>>>
La fonction print() permet d’afficher du texte. L’utilisation la plus simple que l’on puisse en
faire est de passer en argument la variable à afficher : print (variable). Elle permet en plus
d’afficher le contenu d’une ou plusieurs variables.
Exmple :
>>> x = 32
>>> nom = 'John'
>>> print (nom , ' a ' , x , ' ans')
John a 32 ans
>>> print("Nom_"*2)
Nom_Nom
Python a donc écrit la phrase en remplaçant les variables x et nom par leur contenu. Vous pouvez
noter également que pour écrire plusieurs blocs de texte sur une seule ligne, nous avons utilisé
le séparateur virgule (,) avec la fonction print().
En regardant de plus près, vous vous apercevrez que Python a automatiquement ajouté un
espace à chaque fois que l’on utilisait le séparateur virgule (,) . Par conséquent, si vous voulez
mettre un seul espace entre chaque bloc, vous pouvez retirer ceux de vos chaînes de caractères
:
>>> print(nom, 'a' , x , 'ans')
John a 32 ans
Pour imprimer deux chaînes de caractères l’une à côté de l’autre sans espace, vous devrez les
concaténer :
>>> ani1 = 'chat'
>>> ani2 = 'souris'
>>> print(ani1, ani2)
chat souris
>>> print(ani1 + ani2)
chatsouris
L'écriture formatée est un mécanisme permettant d'afficher des variables avec un certain format,
par exemple justifiées à gauche ou à droite, ou encore avec un certain nombre de décimales
pour les floats.
2.9.2.1. f-strings (formatted string literals)
Les f-strings permettent une meilleure organisation de l'affichage des variables.
Reprenons l'exemple ci-dessus à propos de notre ami John :
>>> x = 32
>>> nom = "John"
>>> print(f"{nom} a {x} ans")
John a 32 ans
Il suffit de passer un nom de variable au sein de chaque couple d'accolades et Python les
remplace par leur contenu ! Première remarque, la syntaxe apparait plus lisible que l'équivalent
vu ci-avant print(nom, "a", x, "ans"). Bien sûr, il ne faut pas omettre le f avant le
premier guillemet, sinon Python prendra cela pour une chaîne de caractères normale et ne mettra
pas en place ce mécanisme de remplacement :
>>> print("{nom} a {x} ans")
{nom} a {x} ans
Une variable est utilisable plus d'une fois pour une f-string donnée :
>>> var = "to"
>>> print(f"{var} et {var} font {var}{var}")
to et to font toto
>>>
Enfin, il est possible de mettre entre les accolades des valeurs numériques ou des chaînes de
caractères :
Cela fonctionne avec n'importe quel type de variable (entiers, chaînes de caractères, floats, etc.).
Attention toutefois pour les chaînes de caractères, utilisez des guillemets simples au sein des
accolades si vous définissez votre f-string avec des guillemets doubles.
Remarque : il est possible d’indiquer entre les accolades {} dans quel ordre afficher les
variables, avec 0 pour la variable à afficher en premier, 1 pour la variable à afficher en second,
etc. (attention, Python commence à compter à 0). Cela permet de modifier l’ordre dans lequel
sont affichées les variables.
>>> x = 32
>>> nom = 'John'
>>> print({0} a {1} ans'.format(nom, x))
John a 32 ans
# même résultat avec print("{0} a {1} ans".format(nom, x))
>>> print('{1} a {0} ans'.format(nom, x))
32 a John ans
En Python, on peut considérer chaque variable comme un objet sur lequel on peut appliquer
des méthodes. Une méthode est simplement une fonction qui utilise et/ou agit sur l'objet lui-
même, les deux étant connectés par un point. La syntaxe générale est de la
forme objet.méthode().
'Joe a 20 ans'
La méthode .format() est liée à "Joe a {} ans" qui est un objet de type chaîne de
caractères. La méthode renvoie une nouvelle chaîne de caractères avec le bon formatage ;
ici, 'Joe a 20 ans').
Sur Python, nous pouvons mettre le programme en pause pour une durée spécifique ou pour
une entrée en utilisant :
La méthode time.sleep()
La fonction input()
La méthode os.system("pause")
2.11.1. Mettre en pause un programme en Python en utilisant la méthode time.sleep()
La méthode time.sleep (secs) suspend l’exécution du fil donné pendant le nombre de secondes
fourni comme secs. Par conséquent, si nous avons besoin de suspendre l’exécution du
programme, nous pouvons le faire en fournissant la durée en secondes à la
méthode time.sleep(). L’exemple de code ci-dessous montre comment utiliser la
méthode time.sleep() pour mettre en pause un programme Python.
import time
time_duration = 3.5
time.sleep(time_duration)
Si nous voulons mettre un programme en pause pour obtenir une entrée de l’utilisateur, nous
pouvons le faire en utilisant la fonction input() comme vu précédemment. Nous pouvons
également utiliser cette méthode pour mettre le programme en pause jusqu’à ce que la
touche Enter soit enfoncée. L’exemple de code ci-dessous montrent comment utiliser les
input() pour ce faire.
input("Please press the Enter key to proceed")
Un double clic sur notre tout premier programme au chapitre 1 ; print("Mon premier
programme" enregistré sous un fichier d’extension .py va ouvrir la console de commande et la
refermer aussi vite, ne nous permettant pas de voir notre message. La
méthode os.system("pause") met en pause l’exécution du programme et nous demande
d’appuyer sur une touche pour continuer.
2.12. Exercices :
1) En utilisant l’écriture formatée, affichez en une seule ligne les variables a, b et c dont
les valeurs sont respectivement "salut", 102 et 10.318. Exécuter ce programme en
double cliquant sur le fichier d’extension .py que vous allez créer.
2) Écrivez un programme qui demande le nom et prénom à d’un utilisateur, et qui l’affiche
ensuite à l’écran avec un message commençant par : L'utilisateur est….
Rajouter le code permettant de stocker l’argent contenu (en franc cfa) dans la poche
gauche, puis l’argent contenu dans la poche droite
Rajouter le code pour afficher l’argent total que porte la personne.
3) Écrire un programme qui, à partir de la saisie d'un rayon et d'une hauteur (en m), calcule
le volume d'un cône droit (en m3).