Retour au cours

variables et types : int, float, str, bool, none

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_case pour 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 float pour 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

  1. conversions écrivez une fonction to_celsius(f) qui convertit des fahrenheit en celsius et renvoie un float. affichez le résultat avec 1 décimale via round(..., 1) et une f-string.
  2. 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.
  3. vérité des valeurs créez une liste values = [0, 1, "", "ok", [], [1], None] et affichez pour chacune bool(v).
  4. none check écrivez first_or_none(seq) qui renvoie le premier élément d’une liste non vide, sinon none. testez avec [] et [10, 20].
  5. égalité vs identité faites a = [1,2,3]; b = a; c = [1,2,3]. affichez a == 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 par float() puis int() si vous acceptez l’arrondi par troncature.
  • résultats flottants surprenants c’est la représentation binaire. formatez l’affichage (round, f-strings) ou utilisez decimal pour les montants.
  • nameerror variable non définie. vérifiez l’orthographe et l’ordre d’exécution.