Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:bases:variables [2021/07/19 11:21] – [Plus loin ...] phil | python:bases:variables [2022/09/25 10:33] (Version actuelle) – [Plus loin ...] phil | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | [[python: | ||
+ | |||
+ | ===== Python - Variables, constantes, types numériques et entrées / sorties dans la console ===== | ||
+ | |||
+ | [Mise à jour le : 16/8/2022] | ||
+ | |||
+ | * **Sources** | ||
+ | * **Documentation** sur Python.org : < | ||
+ | |||
+ | * **Lectures connexes** | ||
+ | * **Real Python** | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | * **Developpez.com** - < | ||
+ | |||
+ | * **Mots-clés** : programme, donnée, mémoire, variable, déclarer, initialiser | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | | and | continue | ||
+ | | | ||
+ | | assert | ||
+ | | __async__ | ||
+ | | __await__ | ||
+ | | break | except | ||
+ | | class | __False__ | ||
+ | |||
+ | * < | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 1. Les variables ==== | ||
+ | {{ : | ||
+ | Pendant l' | ||
+ | |||
+ | === 1.1 Nommage des variables === | ||
+ | * Une variable doit respecter quelques règles de syntaxe : | ||
+ | - Le nom d'une variable ne peut être composé que de **lettres**, | ||
+ | - Le nom d'une variable ne peut pas commencer par un chiffre. | ||
+ | - Python est **sensible à la casse** (position =/= Position) | ||
+ | - L' | ||
+ | |||
+ | === 1.2 Déclaration et initialisation === | ||
+ | <callout icon=" | ||
+ | |||
+ | <code python | ||
+ | position_x = 10 # variable de type entier nommée selon la convention inderscore case | ||
+ | pi = 1.14159 # variable de type réel | ||
+ | hello = "Hello world !" # variable de type chaîne de caractère | ||
+ | position_x, pi, hello = 10, | ||
+ | </ | ||
+ | |||
+ | === 1.3 Le type des variables === | ||
+ | * **Source** : < | ||
+ | |||
+ | Le **type d'une variable** identifie la **nature de son contenu** : nombre entier, nombre décimal, texte, etc.. Ces différents types d' | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | * On dispose de quatre **types numériques** en Python : | ||
+ | * Les entiers (**int**) | ||
+ | * Les décimaux (**float**) | ||
+ | * Les nombres complexes (**complex**) | ||
+ | * Les booléens (**bool**) sous ensemble des entiers | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | * **Connaître le type d'une variable** : pour cela, on utilise les fonctions natives // | ||
+ | |||
+ | <code python exvar2a.py> | ||
+ | nom_variable = 15 | ||
+ | type(nom_variable) # renvoie <class ' | ||
+ | isinstance(15, | ||
+ | type(4+5j) # renvoie <class ' | ||
+ | </ | ||
+ | |||
+ | * **Convertir le type d'une variable** | ||
+ | * Convertir une **chaîne de caractères** en un entier avec la fonction **// | ||
+ | annee = " | ||
+ | annee = int(annee) # renvoie le nombre 2019 dans la console | ||
+ | </ | ||
+ | * Convertir un **entier** en une chaîne de caractères avec la fonction **// | ||
+ | annee = 2019 # renvoie le nombre 2019 dans la console | ||
+ | annee = str(annee) # renvoie la chaîne de caractères ' | ||
+ | </ | ||
+ | * **float()** : permet la transformation en flottant. | ||
+ | * **long()** | ||
+ | |||
+ | === 1.4 Copie de variables === | ||
+ | Le contenu d'une variable //var1// peut être placé dans une variable //var2//. | ||
+ | |||
+ | <code python exvar3.py> | ||
+ | var2 = var1 | ||
+ | </ | ||
+ | |||
+ | === 1.5 Permutation === | ||
+ | Python propose un moyen simple pour permuter deux variables (échanger leur valeur). | ||
+ | |||
+ | <code python exvar4.py> | ||
+ | a = 5 | ||
+ | b = 32 | ||
+ | a,b = b,a # résultat a = 32, b = 5 | ||
+ | </ | ||
+ | |||
+ | === 1.6 Opérations arithmétiques et logiques === | ||
+ | * **Source** : < | ||
+ | * ** Opérations arithmétiques** | ||
+ | |||
+ | ^ addition ^ soustraction ^ multiplication ^ division euclidienne ^ division | ||
+ | | **+** | | ||
+ | |||
+ | * //Exemple sur des entiers// | ||
+ | <code python exvar5a.py> | ||
+ | var1 = 5 | ||
+ | var2 = 1 | ||
+ | var3 = var1 + var2 # résultat var3 = 6 | ||
+ | </ | ||
+ | |||
+ | * //Exemple sur des flottants// | ||
+ | <code python - exvar5b.py> | ||
+ | var1 = 5.2 | ||
+ | var2 = 1.4 | ||
+ | var3 = var1 + var2 # résultat var3 = 6.6 | ||
+ | </ | ||
+ | |||
+ | * **Opérations booléennes** | ||
+ | |||
+ | ^ conjonction (ET) ^ Disjonction | ||
+ | | and | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | // | ||
+ | <code python exvar6a.py> | ||
+ | bool1, bool2 = True, False | ||
+ | bool3, bool4 = 1, 0 | ||
+ | bool5 = bool1 and bool2 # résultat : bool5 = False | ||
+ | bool5 = bool1 or bool2 # résultat : bool6 = True | ||
+ | bool7 = not(bool1) | ||
+ | bool8 = bool3 & bool4 # résultat : bool8 = 0 | ||
+ | </ | ||
+ | |||
+ | * **Opérations au niveau bit** | ||
+ | |||
+ | ^ ET | ||
+ | | **& | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | // | ||
+ | <code python exvar6b.py> | ||
+ | # 0b précise que le nombre qui suit est exprimé en binaire | ||
+ | var1 = 0b01010101 | ||
+ | var2 = 0b10101010 | ||
+ | var3 = var1 & var2 # résultat var3 = 0 en base 10, bin(var3) = 0b00000000 | ||
+ | var4 = var1 | var2 # résultat var4 = 255 en base 10, bin(var4) = 0b11111111 | ||
+ | var5 = ~var1 # résultat var5 = -86 en base 10 car l' | ||
+ | # or 2**n + complément à 2 de x = x ici = = 8 donc 256-86 = 170 = 0b10101010 = var2 | ||
+ | var6 = var1 ^ bool2 # résultat bin(var6) = 0b11111111 | ||
+ | var7 = var1 << 1 # résultat var7 = 170 (décalage à gauche de 1 => multiplication entière par 2) | ||
+ | var8 = var2 >> 1 # résultat var8 = 85 (décalage à droite de 1 => division entière par 2) | ||
+ | </ | ||
+ | |||
+ | * **Base 2, 10, 16** | ||
+ | Par défaut, les nombres entiers saisis ou affichés sont en base 10. | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | // | ||
+ | <code python exvar6c.py> | ||
+ | bin(43) | ||
+ | bin(0xf4) | ||
+ | hex(43) | ||
+ | hex(0b11110100) # ' | ||
+ | </ | ||
+ | |||
+ | === 1.7 Variable sans valeur === | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | === 1.8 Portée des variables === | ||
+ | La **portée** d'une variable est la portion de code source où elle est accessible. | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | * **Espace local** | ||
+ | <callout icon=" | ||
+ | |||
+ | //Exemple// | ||
+ | |||
+ | <code python *.py> | ||
+ | |||
+ | # Espace local au programme | ||
+ | valext = 5 # variable connue dans et hors de la fonction | ||
+ | |||
+ | def func(valint): | ||
+ | # Espace local à la fonction func | ||
+ | valint = valint * 2 | ||
+ | # valext est connue de func bien que sa déclaration soit à l' | ||
+ | print(" | ||
+ | # REMARQUES | ||
+ | # valint = valext * 2 est possible, mais déconseillé par les bonnes pratiques de programmation | ||
+ | # valext = valext * 2 est INTERDIT, car on ne peut pas modifier une variable extérieure à l' | ||
+ | print(" | ||
+ | return valint | ||
+ | |||
+ | print(" | ||
+ | valext = func(valext) # valext est connue de func bien que sa déclaration soit à l' | ||
+ | print(" | ||
+ | print(valint) # valint n'est pas connue à l' | ||
+ | </ | ||
+ | |||
+ | //Résultat attendu// \\ | ||
+ | Avant l' | ||
+ | Dans la fonction func, valext = 5 \\ | ||
+ | Dans la fonction func, valint * 2 = 10 \\ | ||
+ | Après l' | ||
+ | **Une exception s'est produite : NameError** \\ | ||
+ | **name ' | ||
+ | |||
+ | <callout icon=" | ||
+ | |||
+ | * **Variable globale** | ||
+ | |||
+ | <callout icon=" | ||
+ | |||
+ | //Exemple// | ||
+ | |||
+ | <code python *.py> | ||
+ | # Espace local au programme | ||
+ | valext = 5 # variable connue dans et hors de la fonction | ||
+ | |||
+ | def func(): # ici valint <- valext, valint : variable connue seulement dans la fonction | ||
+ | # Espace local à la fonction func | ||
+ | global valext # A éviter sauf cas particulier | ||
+ | return valext * 2 | ||
+ | |||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | ==== 2. Entrée / sortie dans la console ==== | ||
+ | Il est fréquent qu'un utilisateur ait besoin de saisir des informations lors de l' | ||
+ | |||
+ | === 2.1 Afficher le contenu des variables | ||
+ | On affiche le contenu d'une ou plusieurs variables dans console avec la fonction **// | ||
+ | |||
+ | //Exemple// | ||
+ | <code python exvar7.py> | ||
+ | nom = " | ||
+ | age = 35 | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | // Exemple // | ||
+ | <code python *.py> | ||
+ | print(" | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === 2.2 Saisir une donnée utilisateur === | ||
+ | On entre une donnée utilisateur dans la console avec la fonction **// | ||
+ | |||
+ | <code python exvar8.py> | ||
+ | nom = input(" | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 3. Constantes ==== | ||
+ | |||
+ | {{ : | ||
+ | * **Real Python** : < | ||
+ | |||
+ | ==== Résumé ==== | ||
+ | * Les variables **conservent les données** du programme lors de son exécution. Leur contenu peut changer. Il faut éviter de mettre des espaces et des accents dans les noms de variable. | ||
+ | * Pour affecter une valeur à une variable, on utilise la syntaxe: // | ||
+ | * Il existe différents types de variables : **entier**, **réel**, **chaîne de caractères**, | ||
+ | * Les variables **locales**, | ||
+ | * Les variables **globales** se définissent à l'aide du mot-clé // | ||
+ | * Pour afficher une donnée dans la console, on utilise la fonction **print()**. | ||
+ | * Pour entrer une donnée utilisateur dans la console, on utilise la fonction **input()**. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | {{ : | ||
+ | ==== Quiz ==== | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||
+ | |||
+ | ==== Plus loin ... ==== | ||
+ | * < | ||
+ | * < | ||
+ | * < | ||