dans cette leçon, vous apprenez à manipuler les variables et les types primitifs de python, et à convertir correctement les valeurs.
objectifs
- créer, nommer et réaffecter des variables
- utiliser les types de base :
int,float,str,bool,none - convertir des valeurs avec
int(),float(),str(),bool() - éviter les pièges fréquents (précision flottante,
none, shadowing)
variables : création et noms
- une variable est un nom qui référence une valeur
- style recommandé :
snake_casepour les noms - évitez d’écraser des noms intégrés comme
list,str,dict
exemples
age = 30
price_eur = 12.5
greeting = "bonjour"
is_member = True
nothing = None
réaffectation
x = 10
x = x + 1
assignation multiple et échange
a, b = 1, 2
a, b = b, a
littéraux numériques lisibles
pop = 1_234_567
hex_value = 0xFF
types de base
n = 42 # int
x = 3.14 # float
s = "python" # str
b = True # bool
z = None # none (absence de valeur)
inspecter un type
type(n) # <class 'int'>
isinstance(s, str) # True
conversions de type (casting)
chaînes vers nombres
int("42") # 42
float("3.14") # 3.14
nombres vers chaînes
str(42) # "42"
f"prix: {3.5} €" # "prix: 3.5 €"
vers booléen (règle de vérité)
bool(0) # False
bool("") # False
bool([]) # False
bool(123) # True
bool("ok") # True
pièges courants
# int("3.0") -> valueerror (la chaîne contient un point)
int(float("3.0")) # 3 (ok, conversion en 2 étapes si nécessaire)
# 0.1 + 0.2 n'est pas exactement 0.3 à cause de la représentation binaire
0.1 + 0.2 # 0.30000000000000004
division et arrondis
7 / 2 # 3.5 division réelle -> float
7 // 2 # 3 division entière (plancher)
7 % 2 # 1 reste
2 ** 3 # 8 puissance
round(3.14159, 2) # 3.14
pour l’argent, préférez plus tard decimal (vous verrez une intro dans la partie standard library).
chaînes de caractères (aperçu)
name = "ana"
len(name) # 3
name[0] # 'a'
"py" * 3 # 'pypypy'
"data" in "dataclass" # True
les chaînes sont immuables : toute “modification” crée une nouvelle chaîne.
booléens et comparaisons
a = 5
b = 7
a == b # False
a != b # True
a < b # True
True and False # False
True or False # True
not True # False
none : absence explicite de valeur
none représente “rien”. test recommandé avec is / is not.
result = None
if result is None:
print("pas de résultat")
évitez == None, préférez is None.
input et conversion
input() retourne toujours une chaîne.
age = int(input("votre âge ? "))
print(f"dans 5 ans vous aurez {age + 5}")
gérez les erreurs plus tard avec try/except (voir la leçon sur les exceptions).
égalité vs identité
[1, 2] == [1, 2] # True (même contenu)
[1, 2] is [1, 2] # False (objets distincts)
bonnes pratiques
- noms clairs et cohérents (
total_ht,taux_tva) - n’écrasez pas des builtins (
list = []est une mauvaise idée) - préférez l’interpolation avec f-strings
- méfiez-vous des arrondis en
floatpour les montants
mini exemples exécutables
# formatage simple avec f-strings
w, h = 3, 4
area = w * h
print(f"aire {w}x{h} = {area}")
# conversion sûre depuis input
raw = input("entrez un nombre entier : ")
value = int(float(raw)) if "." in raw else int(raw)
print(value)
exercices
- conversions
écrivez une fonction
to_celsius(f)qui convertit des fahrenheit en celsius et renvoie unfloat. affichez le résultat avec 1 décimale viaround(..., 1)et une f-string. - parsing d’entrée
lisez un prix entré par l’utilisateur (
"12.90") puis affichez le prix ttc avec un taux de 20 %. montrez le prix formaté sur 2 décimales. - vérité des valeurs
créez une liste
values = [0, 1, "", "ok", [], [1], None]et affichez pour chacunebool(v). - none check
écrivez
first_or_none(seq)qui renvoie le premier élément d’une liste non vide, sinonnone. testez avec[]et[10, 20]. - égalité vs identité
faites
a = [1,2,3]; b = a; c = [1,2,3]. afficheza == b,a is b,a == c,a is c. expliquez en une phrase la différence.
dépannage
- valueerror lors de
int(...)la chaîne n’est pas un entier valide (ex:"12a"ou"3.0"). nettoyez la chaîne, ou passez parfloat()puisint()si vous acceptez l’arrondi par troncature. - résultats flottants surprenants
c’est la représentation binaire. formatez l’affichage (
round, f-strings) ou utilisezdecimalpour les montants. nameerrorvariable non définie. vérifiez l’orthographe et l’ordre d’exécution.