Opérations simples

Il est grand temps d'apprendre à agir sur nos variables de manière un peu plus intéressante. La plupart des opérations dont nous allons parler maintenant sont, heureusement, très intuitives. Comme vous le verrez rapidement, la plupart des opérations que nous aborderons dans cette section concernent les variables numériques

1.Ecrasement

Commençons par rappeler quelques règles simples concernant l'affectation (voir exemple 1)

exemple 1

Une affectation est une opération de la droite vers la gauche: a <-- 3 ou b <-- 5

Une affectation procède par écrasement: la nouvelle valeur assignée vient simplement remplacer le contenu existant de la variable

Lorsqu'on étudie les états successifs des variables a, b et c dans cet exemple, on écrira que:

  • a prend successivement les valeurs 3 puis 13

  • b prend successivement les valeurs 5 puis 21

  • c prend la valeur 8

2. Opérateurs usuels

Dans l'exemple 2, les lignes 3, 4 et 5 constituent des affectations auto référencées. Dit plus simplement, cela signifie que le nouveau contenu de chaque variable est déterminé à partir du contenu déjà existant

Retenez bien l'instruction a = a + 1 qui permet d'incrémenter a d'une unité. Cette instruction est très souvent utilisée lorsqu'il s'agira de dénombrer des objets

exemple 2

Liste des opérateurs les plus courants pour des variables numériques

+ ou - effectue la somme ou la différence de deux nombres

* effectue le produit de deux nombres

/ effectue la division de deux nombres

** calcule la puissance d'un nombre

// renvoie le quotient (entier) d'une division euclidienne

% renvoie le reste (entier positif) d'une division euclidienne

exemple 3

Concernant les types des nombres mis en jeu, les plus rigoureux d'entre vous auront noté que l'opérateur / renvoie systématiquement un nombre à virgule flottante (float), même lorsque le résultat aurait pu s'exprimer de manière entière. Par contre, les opérateurs // et % renvoient toujours des entiers (integer) dès lors que dividende et diviseur le sont

Deux opérateurs courants pour les chaines de caractères

+ juxtapose deux chaines de caractères

* juxtapose la même chaine plusieurs fois de suite

exemple 4

Une fonction mathématique assez utile d'un point de vue algorithmique est la valeur absolue. On rappelle que la valeur absolue d'un nombre réel correspond à la distance entre ce réel et zéro, sur l'axe des réels. C'est en quelque sorte la valeur de ce nombre privée de son signe. Dans python, l'instruction abs(a) renvoie la valeur absolue du nombre a

En programmation, vous pourrez déterminer l'écart entre deux nombres a et b en calculant la valeur absolue de leur différence. abs( a - b ) ou abs( b - a ) évalue donc si a et b sont deux valeurs "proches" ou non. A vous de définir par un critère numérique ce que vous entendez par "proche", selon vos besoins.

exemple 5

EXERCICES

Exercice 1: A l'aide de l'instruction input(), saisir un mot et un nombre entier positif. Afficher ensuite la chaine de caractères qui reproduit le mot n fois de suite, n étant l'entier saisi au clavier et les mots étant séparés par un espace.

Exercice 2: A l'aide de l'instruction input(), saisir deux caractères au clavier puis afficher la valeur de l'écart qui les sépare dans la table ASCII

Exercice 3: A l'aide de l'instruction input(), saisir la valeur du dividende puis celle du diviseur. Afficher alors la valeur du quotient et celle du reste dans la division euclidienne.

Correction exercice 1

# un script possible

mot = input('entre un mot: ')

n = int(input('entre un entier: '))

mot = (mot+' ')*n

print(mot)

# remarque: nous verrons dans la prochaine section une autre facon de procéder, à l'aide d'une boucle


Correction exercice 2

# un script possible

car1,car2 = input('entre deux caractères (séparés par une virgule): ').split(',')

ecart = abs(ord(car1)-ord(car2))

print('leur écart dans la table ASCII vaut',ecart)


Correction exercice 3

# un script possible

dividende = int(input('donne la valeur du dividende: '))

diviseur = int(input('donne maintenant la valeur du diviseur: '))

print('dans la division euclidienne de',dividende,'par',diviseur,'le quotient vaut',dividende//diviseur,'et le reste vaut',dividende%diviseur)