Aller au contenu

Chapitre 1.1 - Variables

I. Les affectations⚓︎

Exemple d'affectation

Dans la console saisir :

Python Console Session
>>> a = 1

rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Affectation

Vous venez de faire deux choses en même temps :

  • Vous avez défini une variable que vous avez nommé a
  • Vous avez affecté la valeur 1 à a

Exemple d'affichage

Dans la console saisir :

Python Console Session
>>> a = 1
>>> print(a + 1)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Python affiche la valeur 2 mais la variable an'a pas été modifiée. Vérifiez le en ajoutant dans la console précédente :

Python Console Session
>>> a
Après exécution de cette ligne, on constate que a n'a pas été modifié.

Ajoutons 1 à notre variable

Dans la console saisir :

Python Console Session
>>> a = 1
>>> a = a + 1

rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Il ne s'affiche rien, c'est normal, nous avons juste fait une affectation.

Ajouter dans la console précédente :

Python Console Session
>>> a 

La variable a a bien été modifiée.

Des chaînes de caractères

Dans la console saisir :

Python Console Session
>>> a = "Hello "
>>> b = "World"
>>> print(a + b)

rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Concaténation

Il s'affiche "Hello World".

👉 Vous avez créé 2 variables, a et b

👉 Vous avez en même temps affecté des valeurs à ces deux variables, puis vous avez affiché a + bqui n'est pas une addition, car a et bne sont pas des nombres.

🐘 On dit qu'on a réalisé une concaténation.

II. Dérouler un code⚓︎

Plus haut, nous avons exposé comment affecter une valeur une variable, et abordé la notion du type. Un code comprend généralement plusieurs affectations, de plusieurs variables, et effectue des opérations avec ces variables. Il est exécuté ligne par ligne, mais pas forcément dans l'ordre ou elles sont écrites.

Toutefois, pour le moment, nous n'utiliserons pas encore de boucle ou d'instructions conditionnelles, que nous verrons ensuite. Les lignes sont donc interprétées et exécutées dans l'ordre ou elles sont écrites.

Pour lire un code, ou pour mettre au point un code, il est déterminant de savoir le dérouler à la main, sur une feuille.

Il n'existe pas de format standard pour écrire le déroulé d'un code, mais nous allons adopter une de ces deux présentations que nous utiliserons toute l'année. ci-dessous un petit exemple :

✍️ A noter : Méthode 1⚓︎

nom image

A gauche nous indiquons le numéro de ligne, à droite les affectations.

Le numéro de ligne est peu utile dans cet exemple très simple, puisqu'elles sont exécutées dans l'ordre ou elles sont écrites, mais ne perdez pas de vue que ce n'est pas toujours le cas.

✍️ A noter : Méthode 2⚓︎

nom image

Le tableau indique l'état de toutes les variables après exécution de chaque ligne.

III. Exercices⚓︎

Pour résoudre ces exercices, il est demandé de dérouler le code sur papier.

Exercice 1

Python
1
2
3
x = 5
x = x + x
x = x - 5
Que contient la variable x à la fin du code ?

Solution

Déroulé du code ligne par ligne

L1 : x = 5
L2 : x = 10
L3 : x = 5

A la fin on a x = 5

Exercice 2

Python
1
2
3
4
5
nombre = 3
print(nombre + 1)
print(nombre)
nombre = nombre + 4
print(nombre)
Que s'affiche-t-il ?

Solution

Il s'affiche :

4
3
7

Exercice 3
Python
1
2
3
4
5
6
premier = 4
deuxieme = 6
troisieme = premier * deuxieme
deuxieme = troisieme - premier
premier = premier + deuxieme + troisieme
troisieme = deuxieme * premier

Donner la valeur finale de toutes les variables à la fin du programme

Solution
  • Première présentation possible :

L1 : premier = 4
L2 : deuxieme = 6
L3 : troisieme = 24
L4 : deuxieme = 20
L5 : premier = 48
L6 : troisieme = 960

A la fin on a :

premier = 48
deuxieme = 20
troisieme = 960

  • Présentation à privilégier :
ligne premier deuxieme troisieme
L1 4
L2 4 6
L3 4 6 24
L4 4 20 24
L5 48 20 24
L6 48 20 960
Exercice 4 - sur papier : l'algorithme d'échange

Algorithme d'échange : sujet

Solution

Algorithme d'échange : correction

IV. A retenir⚓︎

Variable

Une variable est une zone de la mémoire de l'ordinateur dans laquelle une valeur est stockée. Aux yeux du programmeur, cette variable est définie par un nom, alors que pour l'ordinateur, il s'agit en fait d'une adresse, c'est-à-dire d'une zone particulière de la mémoire.

😊 En Python on ne "déclare" pas les variables. Une variable est crée en lui affectant une valeur.

print

La fonction print() permet d'afficher dans la console.

V. Découverte des types⚓︎

Les types

C'est une notion fondamentale en Python (comme dans tout les langages).

Dans les exemples qui précèdent, nous avons utilisé des nombres entiers a = 1 puis des chaînes de caractères a = "Hello"

Ce ne sont pas les mêmes objets.

Les objets

Qu'est-ce qu'un objet en python ?

Python est un langage orienté objet. Une variable est un mot (ou une simple lettre) qui réfère à une valeur. par exemple, si on entre a = 1, la variable a réfère à la valeur 1.

La valeur est ici un entier et le type de la variable a est un entier.

Connaître un type

On peut connaitre le type d'une variable avec la fonction type(). Essayez en saisissant ceci dans la console :

Python Console Session
>>> a = 1
>>> type(a)

rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Vous obtenez : <class 'int'>

La fonction type nous permet de savoir que le type de la variable est int ce qui est l'abréviation de integer qui signifie entier en anglais.

Exercice 1

Créer une variable nommée mot à laquelle vous affecterez la valeur "Bonjour" et faites afficher, dans la console, le type de cette variable.

rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution
Python Console Session
>>> mot = "Bonjour"
>>> type(mot)
Exercice 2

Créer une variable nommée nombre à laquelle vous affecterez la valeur 5.5 et faites afficher, dans la console, le type de cette variable.

rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution
Python Console Session
>>> nombre = 5.5
>>> type(nombre)

Le type float est traduit en français par "flottant".

Les types d'objets et les méthodes attachées

Le type d'un objet est important, car chaque objet dispose de méthodes. Les méthodes sont des fonctions spéciales, utilisable spécifiquement avec un type d'objet. Par exemple, les objet de type chaîne de caractères (type str) disposent d'une méthode upper() qui permet de convertir l'objet en majuscule.

Recopier dans la console :

Python Console Session
>>> a = "Hello "
>>> type(a)
>>> a.upper()
>>> a   
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

False

Recopier dans la console :

Python Console Session
>>> proposition_1 = 1>3
>>> type(proposition_1)
>>> proposition_1
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

True

Recopier dans la console :

Python Console Session
>>> proposition_2 = 1<3
>>> type(proposition_2)
>>> proposition_2
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Résumé

Les valeurs des variables sont stockées quelque part dans un emplacement non spécifié dans la mémoire de l’ordinateur sous forme de zéros et de uns.

Notre programme n’a pas besoin de connaître l’emplacement exact où une variable est stockée; il peut simplement s’y référer par son nom.

Ce que le programme doit savoir, c’est le type de données stockées dans la variable. Stocker un entier simple n’est pas la même chose que stocker une lettre ou un grand nombre à virgule flottante.

Même s’ils sont tous représentés par des zéros et des uns, ils ne sont pas interprétés de la même manière et, dans de nombreux cas, ils n’occupent pas la même quantité de mémoire.

Les types de données fondamentaux

Ce sont des types de base implémentés directement par le langage qui représentent les unités de stockage de base prises en charge de manière native par la plupart des systèmes. Ils peuvent principalement être classés en:

Type représente exemples remarque
str chaîne de caractères 'A’   ‘$’   'bonjour' chaque caractère est codé sur 1 à 4 octet.
int Entiers numériques 0   -1   102 Ils existent en différentes tailles et peuvent être signés ou non signés, selon qu’ils supportent des valeurs négatives ou non.
float Nombres à virgule flottante 3.14 ou 0.01 Dans de nombreux langages, on peut choisir le niveaux de précision, en fonction du type utilisé pour les trois types à virgule flottante.
bool Booléen True False Ne peut représenter qu’un des deux états, vrai ou faux.

Exécuter le code

prenom_1 = "Alice"
prenom_2 = "Bob"
age_1 = 15
age_2 = "17"
print(prenom_1)
print(prenom_2)
print(age_1)
print(age_2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Exécuter le code

Ci-dessus, tout s'est bien passé. 🌵 Mais regardons maintenant :

difference = age_2 - age_1
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

À comprendre

👉 Le message d'erreur parle de type(s)

En effet les variables prenom_1, prenom_2, age_2 sont en quelque sorte des "mots".
On le voit car ils sont entre guillemets. La variable age_1 est un nombre.

Différents types

📝 Il existe différents types de valeurs, et on doit toujours veiller à ne pas mélanger des choux avec des carottes.

On sait facilement calculer 1 + 3 ou même 1 + 3.5 mais on ne sait que faire de 1 + "Albert"

En effet 1 est un nombre entier, et "Albert" est une chaine de caractère.

Albert et "Albert"

⚠️ Bien faire la différence entre Albert et "Albert".

Exécuter ci-dessous

nom_1 = "Albert"
nom_2 = Albert
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Que s'est-il passé ?

Nous obtenons une erreur une erreur NameError qui nous indique que la variable Albert n'existe pas (pas définie).

🐘 Retenez bien :

  • Albert désigne une variable.
  • "Albert" désigne la chaine de caractère "Albert".

L'opérateur ==

== est utilisé pour déterminer si deux objets python ont la même valeur

⚠️ Il ne faut pas confondre = qui sert à faire une affectation avec ==

Exécuter ci-dessous

a = 9
print(a == 9)
print(a == 10)
b = 3
c = -3
d = -9
print("9 est le carré de 3 :", a == b**2)
print("-9 est le carré de -3 :", d == c**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Égaux ou identiques ?
  • Les nombres 1 et 1.0 sont égaux car ils ont la même valeur
  • 🌵 Les nombres 1 et 1.0 ne sont pas identiques car ils sont de types différents

a = 1
b = 1.0
print("a est égal à b ? -> ", a == b)
print("a est identique à b ? -> ", a is b)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

QCM à refaire tant que nécessaire ...

  1. L'instruction ci-dessous est :

    mot = 'arbre'
    

  2. Si on exécute le code ci-dessous, il s'affiche :

    a = '2'
    b = a
    print(a * b) 
    

  3. L'instruction ci-dessous :

    a = '5'
    

  4. Le code ci-dessous :

    a = 1
    b = 2
    a + b = 3
    print(a + b)
    

  5. L'instruction ci-dessous :

    a = 2
    

  6. Que vaut la variable somme après exécution du code ci-dessous ?

    a = 1
    b = 7
    somme = 'a + b'
    

Les réponses resteront cachées...

VI. Les variables : entrées et sorties au clavier⚓︎

Un programme sert en général à quelque chose : il effectue une tâche précise, répétitive, et peut recommencer avec des données d'entrée différentes. Même un programme très simple peut interagir avec l'utilisateur. Par exemple :

input()

Tester le script ci-dessous

prenom = input("Saisir votre prénom : ")
print("Hello ", prenom)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Tester le script ci-dessous

x = 16
print(x**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Ce code va afficher le carré de x et ici x = 16.
Mais si on veux le carré d'un autre nombre il faut modifier le programme lui même, et ce n'est pas satisfaisant.

Tester le script ci-dessous

Nous allons utiliser input comme nous l'avons vu.

x = input("Saisir x : ")
print("x = ", x)
print(x**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Que s'est-il passé ?

Nous obtenons un message d'erreur :

Python
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

Nous avons parler des type plus haut, et dans le code ci-dessous nous avons une erreur de type : TypeError

Il est important de commencer à apprendre à lire les messages d'erreurs. L'interpreteur Python vous donne 2 informations :

Le fichier en cause et le numéro de la ligne ou l'erreur s'est produite suivit de contenu de cette ligne.

Une description de l'erreur composée de trois parties (séparées par :) :
1. TypeError : il s'agit donc d'une erreur de type
2. unsupported operand type(s) for ** or pow() : les types des opérandes de la fonction puissance (pow() ou **) sont incorrects.
3. 'str' et 'int' : vous avez utilisé la fonction puissance avec x de type str et 2 de type int

Conclusion: x**2 n'a pas pu être évalué, car x est de type str alors qu'il aurait dû être de type int

x = input() permet de lire une valeur au clavier, mais la valeur lue sera toujours de type str (chaîne de caractère)

Saisir des entiers : version 1

Evidement il est possible de saisir aussi des valeurs numériques! Mais il faut pour cela, convertir la valeur saisie dans le type souhaité. Python convertira si c'est possible :

  • si vous entrez "bonjour" et demandez de convertir en un nombre, vous aurez une erreur.
  • mais si vous entrez 12, il lit "12" et vous pouvez convertir "12" en 12.

Tester :

x = input()
x = int(x)
print(x**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

La ligne x = int(x) convertit la chaine de caractère x en int

Saisir des entiers et afficher : version 2

Tester :

x = int(input())
print(x**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

On peut condenser en une seule ligne x = int(input())

Saisir des entiers et afficher : version 3

Tester :

x = int(input("Saisir x : "))
print(x**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Saisir des entiers et afficher : version 4

Tester :

x = int(input("Saisir x : "))
print("x au carré vaut : ", x**2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

À vous de jouer

Corriger l'erreur. Votre programme doit afficher l'âge de Monsieur Dupont qui est le double du vôtre.

age = input("Saisir votre âge")
print("Vous avez ", age, "ans.")
age_dupont = age * 2
print("Monsieur Dupont a le double de votre age. Il a ", age_dupont, "ans.")
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Que s'est-il passé ?

Si age est de type chaine de caractères, il est possible de faire 2 * age. Cela revient en fait à faire age + age.

On dit qu'on a fait une concaténation des chaines de caractères. Cela revient tout simplement à les juxtaposer.

Solution

age = int(input("Saisir votre âge")) # age est bien de type int
print("Vous avez ", age, "ans.")
age_dupont = age * 2
print("Monsieur Dupont a le double de votre age. Il a ", age_dupont, "ans.")
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

VII. Les opérateurs⚓︎

Avec les nombres⚓︎

Tester les opérateurs sur les nombres

Le type d'un objet est important, car chaque objet dispose de méthodes. Les méthodes sont des fonctions spéciales, utilisable spécifiquement avec un type d'objet. Par exemple, les objet de type chaîne de caractères (type str) disposent d'une méthode upper() qui permet de convertir l'objet en majuscule.

Recopier dans la console :

Python Console Session
>>> 3 * 2
>>> 3 ** 2
>>> 38 / 5
>>> 38 // 5 
>>> 38 % 5
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Pré-requis : division euclidienne

Rappelons ce qu'est une division euclidienne

Division euclidienne

Opérations avec des nombres

Nom Symbole mathématique syntaxe python Exemple
Addition++3 + 2 = 5
Soustraction--3 - 2 = 1
Multiplication×*3 * 2 = 6
Division//7 / 2 = 3.5
Division entière (quotient)//7 // 2 = 3
Modulo (reste de la division entière)%7 % 2 = 1

A savoir

Prenez bien note des opérateurs **, % et //, qui sont d'usage très fréquent.

  • 3 % 2 se lit 3 modulo 2.
    Par exemple 38=5×7+3 donc 38 % 5 renvoie 3.

  • 3 // 2 se lit 3 division entière par 2.
    Par exemple 38=5×7+3 donc 38 // 5 renvoie 7.

  • 3**2 se lit 3 puissance 2

Sur papier

Effectuez, sans calculatrice et sans Python, les opérations suivantes

  • 14 // 3 =
  • 5 % 2 =
  • 1237 % 2 =
  • 1238 % 2 =
Solution
  • 14 // 3 = 4
  • 5 % 2 = 1
  • 1237 % 2 = 1
  • 1238 % 2 = 0
À vous de jouer

Evaluer mentalement le résultat, puis excuter pour vérifier

a = 13
b = 5
print("a % b = ", a % b)
print("a // b = " , a // b)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

À vous de jouer

Faire vos propres essais.

Evaluer mentalement le résultat, puis excuter pour vérifier

a = ...
b = ...
print("a % b = ", a % b)
print("a // b = " , a // b)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

La racine carré

Comment calculer par exemple 2 ? On a besoin de la fonction racine carré. En python, elle existe, mais il faut pour en disposer, importer un module : le module math (sans s)

On dispose alors d'une fonction sqrt(), mais nous reparlerons des fonctions prochainement.

Tester :

from math import sqrt
a = 2
print(sqrt(a))
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Avec des chaînes de caractères⚓︎

Opérations avec des chaînes de caractères

Nom Exemple
Concaténation"Bonjour " + "!" = "Bonjour !"
Répétition"Aie"*3 = "AieAieAie"

À vous de jouer

Exécuter, puis expliquer ce qui s'est passé

abc = "bonjour"
print(abc == "abc")
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution

abc == "abc" est évalué à False car abc vaut "bonjour", mais l'expression est valide.

À vous de jouer

Exécuter, puis expliquer ce qui s'est passé

abc = "bonjour"
print("abc" == bonjour)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution

"abc" == bonjour : ici l'expression ne peut pas être évaluée, bonjour est une variable (qui n'existe pas) => NameError

Sur papier

Evaluer les expressions suivantes sur papier, sans utiliser Python

  • "a" + "b"
  • "hahaha" == 3 * "ha"
Solution
  • "ab"
  • True

la chaîne vide

Pour les nombres, il existe le zéro qui est un nombre particulier.

Pour les chaines de caractères, il y a une sorte de zéro : la chaine vide

Et de la même façon que zéro est souvent utilisé en arithmétique, la chaine vide est aussi fréquement utile dans le monde des chaînes de caractères.

La chaîne de caractères vide s’écrit ""

Bilan⚓︎

Résumé

  • Bien retenir les opérateurs // et % qui donnent respectivement le quotient et le reste de la division euclidienne.

  • Retenir aussi :

    • concaténation "Aie" + "!" qui donne "Aie!"
    • et répétition "Aie"*3 qui donne "AieAieAie".

VIII. Des erreurs⚓︎

Variable non définie

Tester puis corriger l'erreur

print(nombre_3)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution

Effectivement la variable nombre_3 n'est pas définie.

On peut par exemple définir nombre_3 avec une affectation

Python
nombre_3 = 5
print(nombre_3)
Erreur d'indentation

Tester puis corriger l'erreur :

entier = 4
print(entier + 1)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

On appelle indentation les décalages vers la droite. En Python ils font partie de la syntaxe.

Solution
Python
entier = 4
print(entier + 1)
Erreur de type

Tester puis corriger l'erreur :

nombre = "3"
print(nombre / 2)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution

Vous effectuez la division d'une chaine par un entier, cela n'a pas de sens.

Python
nombre = 3
print(nombre / 2)

IX. Exercices⚓︎

Exercice 1 : la fête

Ecrivez un code qui compte les têtes, les épaules, les genoux et les orteils à une fête.

Le correcteur va automatiquement définir une variable personnes pour vous, elle contiendra le nombre de personnes à la fête.

Cette variable se trouve dans du code caché.

Votre code doit définir quatre variables :

  • une appelée tetes
  • une appelée epaules
  • une appelée genoux
  • et une appelée orteils

Ces variables doivent respectivement être égales au nombre de têtes, épaules, genoux et orteils à la fête. Votre programme ne doit pas générer de sortie (pas d'affichage)

# Votre code ci-dessous
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013/-eSc_xyuh1a0f*=6 sot45dmV3npvibPgr2l050y0d0v0m0F0L0t0s0f0L0m0t0t0q010v0F0D010406050t0j0z0z0m0J0i040e0u0L0j0$0u0C050b0-0/0;0?0+0D0405160 190b160+0y0F0E0U0W0Y0!0W0C0I0j0m0I0d0c0D0i0v0k0}0s0k0F0I0k0L1B0k0v0)050P0G0L0d1i0X0Z011A1C1E1C0v1K1M1I0v0J171w0U0_0t0D0m0C0!0K011O1k010o0R0d0C0m0z0d1I1*1,1;1Q1@1M1`1|0)0a0s0H0J0u0D0u0t0F0|0C0s0N1(0J0J0d0f2h0 1 0C170b1w2u1!1$1#1J0y211l0F0C1_2e1I1f1h0V1P2E2G0C0u2K1I0D2n172s2u2X0,1+2i2M1=2Q0J0:0L1I0m1z2n0o0!030g0g0f2R0d1E2P0u0c0K0r0c0l0)0l0 0m2Y2#0*2!202%1Q2)2+2-2/0d2;012?2^2`2|2H2 311/040K36381,3a2s2D013f0m2,172.0k2:2=2@2_0N3p2Q3r0c0B0)0B3w2r390+3A3d0!3D3F053H3J3l3L3o2F3q300c0w0)0w3V103X3b2$1j3e0u2*3E3h3I3j3K3n3N3.3P3:0x0)0x3^2Z1c2V0 2K2x0y1$2C3!013M1}174j184h4f2Z4q2W2#0s0F0y0!2@2s3Q333G4B4D013,472}4H1:250d4E462{482~3:4I3V3Z3}0!0f4I030s0A0u1!1N4q0U0F0c0N0Y0u0j0t3W3y0+3_3y3{4K4U4G3:3t3(534M4V3O4Y3s4R1{4T5a4q5c3Q570b37524o0C0)0v0O0d4|502t0s5p4%010u0)0q4}5y5A2N3C0)0D0d0J0t0}2G5w2X4 2Z3A4C542#3Q3S4J5X5i3-4P3:3S0s4S4U5j4X5!1I5n4z3c5B5r040d1+0j1M5S395z4$5J5D045F5x04634A4o0z0F0)3v695I1=660p5G5^3|5J5{5M5O5Q5v6n5U39525%4F5Z3:3=5$4L4N4W5*313=5-5g5/5)3/6K5?5o642(0)1r2Q0j0h6n6b5_655E6#6j1Q6e6g6n6+0!6l6/6U3e5L5N5P0C5R6w6?4A6A0g55314b6F6O4O6Q0c4b6M1|776I79754#6c5`0)3 5t0R613y6$6p6k6)697r3B6-040l0n6 6%7t046m6i6@3#6_6t6|6v696x510b4y1a4h0b4t2v4l0 2y7Z0m1L0d2u4j4 0N0P7o04.
Indice

La première ligne de votre programme pourrait être :

Python
tetes = 1 * personnes
En effet chaque personne a une tête ...

Exercice 2 : la vitesse

Vous assistez à une course cycliste qui monte et descend une colline. Le correcteur automatique définira trois variables pour vous : distance_montee, distance_descente donnant la distance (en km) des deux parties de la course, et temps_total donnant le temps (en minutes) mis au total.

On veut écrire un programme qui indique la vitesse moyenne (en km/min) pour toute la course.

Cliquez et glissez avec la souris pour réarranger les lignes qui sont en désordre.

Indice

Le programme a défini trois variables. Assurez-vous que les lignes soient dans le bon ordre afin que chaque nouvelle variable soit bien définie avant d'être utilisée.

Exercice 3 : échange

Compléter ci-dessous pour échanger les contenus de deux variables x et y

x = int(input("saisir x : "))
y = int(input("saisir y : "))
print("Avant échange : ")
print("x = ", x)
print("y = ", y)
...
print("Après échange : ")
print("x = ", x)
print("y = ", y)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Solution
Python
x = int(input("saisir x : "))
y = int(input("saisir y : "))
print("Avant échange : ")
print("x = ", x)
print("y = ", y)

temp = y
y = x
x = temp

print("Après échange : ")
print("x = ", x)
print("y = ", y)

QCM à refaire tant que nécessaire ...

  1. On a exécuté le code suivant :

    cote = 5
        aire = cote ** 2
    print(aire)
    

    Quel type de message d'erreur va-t-on obtenir ?

  2. Quel message affiche l’ordinateur lorsque l'utilisateur saisit 8.5 ?

    nombre = int (input('Saisir un nombre') )
    double = nombre * 2
    print(double)
    

  3. On a exécuté le code suivant :

    nombre_d_invites = 25
    nombre_de_courriers = 11
    print(nombre_de_courrier)
    
    On obtient le message suivant :

    Traceback (most recent call last):
    File '<module1>', line 3, in <module>
    NameError: name 'nombre_de_courrier' is not defined

    Que signifie ce message d'erreur ?

  4. On a exécuté le code suivant :

    cote = input('quel est la longueur du coté du carré ?')
    aire = cote ** 2
    print(aire)
    
    On obtient le message suivant :

    Traceback (most recent call last):
    File '<module1>', line 2, in <module>
    TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

    Que signifie ce message d'erreur ?

  5. Quel message affiche l’ordinateur lorsque l'utilisateur saisit 5 ?

    nombre = input('Saisir un nombre')
    triple = nombre * 3
    print(triple)
    

Les réponses resteront cachées...

X. Expressions et affectations⚓︎

Exemple

ma_variable = 1
print(ma_variable)
ma_variable =  2 * 7
print(ma_variable)

Lorsque l'on écrit en python :

ma_variable = 1

ou bien avec une expression dans le membre de droite :

ma_variable = 2 * 7

👉 Si ma_variable n'existe pas déjà, l'interpréteur python fait 3 choses :

1. Il évalue le membre de droite. (ici, il vaut trivialement 1 dans le 1er exemple, ou 14 dans le second)

2. dans un emplacement de la mémoire, il écrit la valeur. Cet emplacement est repréré par une adresse, par exemple, l'adresse 3005392 qui est un simple numéro qui situe un emplacement dans la mémoire.

3. il crée aussi une variable nommée ma_variable qui est un mot utilisable dans le code, qui réfère à l'emplacement mémoire.

Le programmeur n'a pas à se soucier de l'emplacement mémoire, il n'utilise que le nom de la variable.

👉 Si au contraire, ma_variable existe déjà :

1. Il évalue le membre de droite.

2. Dans l'emplacement de la mémoire correspondant à ma_variable, il écrit la valeur.

⚠️ Ce qui se trouvait avant à cet emplacement là est donc supprimé. (On dit parfois "écrasé")

👉 Ce n'est pas Python qui choisit l'emplacement mémoire, c'est le système d'exploitation qui gère cela. En fait python envoie une requête à l'OS pour stocker une valeur, l'OS choisit un emplacement vide, stocke la valeur et renvoie à l'interpréteur python l'adresse mémoire utilisée.

Expression

Une Expression est quelque chose que python peut évaluer.

Exemple

1 
3 + 2
3 + x # si la variable x est définie
x + y # si les 2 variables sont définies

Mais nous en verrons bien d'autres qui ressembleront par exemple à :

Exemple

fct(x)
mot.find()

Toutes ces expressions peuvent être evaluées, c'est à dire que l'interpréteur python peut calculer la valeur de l'expression.

Résumé - Expression

une expression est quelque chose qui peut être évalué par l'interpréteur python.

Affectation

Exemple

entier = 1

Une affectation est faite dans toutes les instructions du type ma_variable = expression

Le signe = n'a donc pas la même signification qu'en maths, il signifie affecter le résultat de lexpression de droite à la variable indiquée à gauche.

Cela consiste donc à :

  • Evaluer le membre de droite
  • stocker le résultat dans un emplacement mémoire
  • Cette valeur sera par la suite accessible en utilisant le nom de la variable
Adresses mémoires

Exécuter :

# plusieurs affectation :
x = 1
y = 3
somme = x + y
# afficher les adresses mémoire :
print("x réfère à l'adresse :", id(x), "ou est stocké la valeur", x)
print("y réfère à l'adresse :", id(y), "ou est stocké la valeur", y)
print("somme réfère à l'adresse :", id(somme), "ou est stocké la valeur", somme)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Situation 1 : =

Attention

Ne perdez pas de vue que le signe = est une affectation, et non une égalité.

Les instructions comme :

x = 2 * x
i = i + 1
mot = "a" + mot

sont très fréquentes dans nos codes.

  • Python évalue le membre de droite
  • puis affecte la valeur à la variable à gauche du signe =

Ainsi : x = x + 1 n'a pas du tout le sens d'une égalité. Si la valeur de x était 4, par exemple :

  • on évalue x + 1 (ce qui vaut 5)
  • on affecte le résultat à x (donc maintenant x vaut 5)

Situation 2 : = et ==

Attention

Ne perdez pas de vue que le signe = est une affectation, et non une égalité.

Voila une affection avec une expression booléenne :

vrai_ou_faux =  x == 2

  • == est un test d'égalité.
  • x == 2 est une expression booléenne.

L'expression x == 2 vaut True si x vaut 2 et False sinon.

Rapellons que, lors d'une affectation :

  • Python évalue l'expression à droite du signe =
  • puis affecte la valeur à la variable à gauche du signe =

Ainsi ici, python évalue l'expression x == 2 puis affecte le résultat à la variable vrai_ou_faux

  • vrai_ou_fauxprendra la valeur True si x est bien égal à 2
  • Sinon, vrai_ou_fauxprendra la valeur False

XI. Bonnes pratiques de nommage⚓︎

Ce qui est autorisé et ce qui ne l'est pas⚓︎

Pour nommer correctement une variable, il existe des règles à respecter.

Les règles

  • le nom de la variable peut contenir les caractères suivants :

    • des lettres non accentuées (attention, minuscule et majuscule sont des caractères différents)
    • des chiffres (mais pas comme premier caractère)
    • le tiret du bas _ (underscore, tiret du 8)
  • le nom de la variable ne doit pas commencer par un chiffre

  • le nom de la variable ne doit pas contenir d'espace
  • le nom de la variable ne doit pas être un mot-clé du langage.
Liste des mots-clés réservés par Python

andas assert break class continue def del
elif else except False finally for from global
if import in is lambda None not or
pass raise return True try while with yield

Du sens, du sens, du sens⚓︎

Hormis pour les indices (de boucles, de tableaux...) un nom de variable (dans un programme destiné à être lu, par vous ou quelqu'un d'autre) doit impérativement avoir du sens :

Python
# PAS BIEN
if d == 1:
    cep += vm

# BIEN
if date == 1:
    compte_epargne += versement_mensuel

Règle d'or ❤

On ne donne jamais un nom de variable au hasard, on le choisit pour qu'il soit explicite.

image

Oui mais pour donner du sens, il faut souvent plusieurs mots... La longueur du nom de la variable («c'est trop long à taper») n'est plus un problème depuis que la grande majorité des IDE propose la complétion automatique.
Mais comment former ces longs mots ?

Syntaxe des noms à rallonge⚓︎

Comment accoler des mots

  • S'il est composé, le nom peut être de la forme:
    • snake_case : les mots sont séparés par des underscores. Conseillé en Python.
    • camelCase : les mots sont séparés par des majuscules mais la 1ère lettre est minuscule. Conseillé en Javascript.
    • PascalCase : les mots sont séparés par des majuscules et la 1ère lettre est majuscule. Conseillé en C.
    • kebab-case : les mots sont séparés par des tirets courts. Conseillé en HTML - CSS.

Sans surprise, en Python, nous utiliserons donc le snake_case.

image