Section 11.1.15 : Python — Variables, types et opérateurs
🎯 Objectif pédagogique
Apprendre les fondamentaux de Python : variables, types de données, opérateurs et les particularités du langage. Vous serez capable d'écrire des scripts Python basiques et de comprendre pourquoi Python est le langage de référence pour la data science et l'IA.
Pourquoi Python en plus de JavaScript ?
Marc se demandait : pourquoi apprendre un deuxième langage ? Réponse courte : chaque langage a son domaine de force.
| Domaine | Langage dominant |
|---|---|
| Frontend web | JavaScript (le seul) |
| Backend web | JavaScript (Node.js), Python, Go |
| Data science | Python (imbattable) |
| Machine learning / IA | Python (95% des projets) |
| Automatisation | Python (scripts et bots) |
| DevOps | Python, Bash, Go |
Python est LE langage de l'IA — et dans un bootcamp "Tech & AI Foundations", c'est obligatoire.
La philosophie Python
import this # "The Zen of Python"
# "Beautiful is better than ugly."
# "Explicit is better than implicit."
# "Simple is better than complex."
# "Readability counts."
Python est conçu pour être lisible — le code ressemble presque à de l'anglais. L'indentation n'est pas optionnelle : elle DÉFINIT la structure du code (pas d'accolades {}).
Variables et types
# Pas de déclaration de type explicite (typage dynamique)
name = "Marc Dupont" # str (chaîne de caractères)
age = 34 # int (entier)
salary = 65000.00 # float (décimal)
is_student = True # bool (True/False avec majuscule !)
skills = ["HTML", "CSS"] # list (tableau)
# Python devine le type automatiquement
print(type(name)) # <class 'str'>
print(type(age)) # <class 'int'>
print(type(skills)) # <class 'list'>
# Conversion de type
age_str = str(age) # "34"
price_float = float("99.99") # 99.99
count = int("42") # 42
Strings (chaînes)
# Création
simple = 'Bonjour'
double = "Marc"
multiline = """
Ceci est un texte
sur plusieurs lignes
"""
# f-strings (interpolation) — Python 3.6+
greeting = f"Bonjour \{name\}, vous avez \{age\} ans"
calc = f"2 + 2 = \{2 + 2\}"
# Méthodes utiles
"hello world".upper() # "HELLO WORLD"
"HELLO WORLD".lower() # "hello world"
" espace ".strip() # "espace"
"Marc Dupont".split(" ") # ["Marc", "Dupont"]
", ".join(skills) # "HTML, CSS"
"hello".replace("l", "r") # "herro"
len("Marc") # 4
# Slicing
text = "Python"
text[0] # "P"
text[-1] # "n"
text[0:3] # "Pyt"
text[2:] # "thon"
text[::-1] # "nohtyP" (inversé)
Listes et tuples
# Liste (mutable — modifiable)
skills = ["HTML", "CSS", "JavaScript"]
skills.append("Python") # Ajouter à la fin
skills.insert(0, "Git") # Insérer au début
skills.remove("Git") # Retirer par valeur
last = skills.pop() # Retirer le dernier
print(len(skills)) # Longueur
print("CSS" in skills) # True
# Compréhension de liste (très Pythonique)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = [n for n in numbers if n % 2 == 0] # [2, 4, 6, 8, 10]
squares = [n**2 for n in numbers] # [1, 4, 9, 16, ...]
names_upper = [s.upper() for s in skills] # ["HTML", "CSS", ...]
# Tuple (immutable — non modifiable)
coordinates = (48.8566, 2.3522) # Paris
lat, lng = coordinates # Déstructuration
Dictionnaires
# Dictionnaire (équivalent de l'objet JS)
profile = \{
"name": "Marc Dupont",
"age": 34,
"skills": ["HTML", "CSS", "Python"],
"is_active": True
\}
# Accès
print(profile["name"]) # "Marc Dupont"
print(profile.get("email", "N/A")) # "N/A" (valeur par défaut)
# Modification
profile["age"] = 35
profile["email"] = "marc@email.com"
# Itération
for key, value in profile.items():
print(f"\{key\}: \{value\}")
Opérateurs
# Arithmétiques
10 + 5 # 15
10 - 5 # 5
10 * 5 # 50
10 / 3 # 3.333... (division flottante)
10 // 3 # 3 (division entière)
10 % 3 # 1 (modulo)
2 ** 10 # 1024 (puissance)
# Comparaison
10 == 10 # True
10 != 5 # True
10 > 5 # True
# Logiques (en anglais, pas de symboles !)
True and True # True
True or False # True
not True # False
# Identité
x = [1, 2]
y = [1, 2]
x == y # True (même valeur)
x is y # False (objets différents en mémoire)
JavaScript vs Python — Les pièges
Plusieurs différences surprennent les débutants :
- →Indentation : Python utilise l'indentation (4 espaces), JS utilise les accolades
- →Booléens : Python =
True/False, JS =true/false - →Logique : Python =
and/or/not, JS =&&/||/! - →None vs null : Python =
None, JS =null/undefined - →Print : Python =
print(), JS =console.log()
🏋️ Exercice pratique (20 minutes)
# Profil de Marc en Python
profile = \{
"name": "Marc Dupont",
"age": 34,
"previous_job": "Analyste financier",
"goal": "Développeur Full-Stack",
"skills": ["HTML", "CSS", "JavaScript"],
"week": 1
\}
# 1. Afficher le profil formaté
for key, value in profile.items():
print(f"\{key:>15\} : \{value\}")
# 2. Ajouter Python aux skills
profile["skills"].append("Python")
print(f"\nCompétences : \{', '.join(profile['skills'])\}")
# 3. Compréhension de liste : skills en majuscules
upper_skills = [s.upper() for s in profile["skills"]]
print(f"Majuscules : \{upper_skills\}")
# 4. Fonction progression
def show_progress(p):
bar = "█" * (p["week"] * 4) + "░" * ((5 - p["week"]) * 4)
percent = p["week"] / 5 * 100
print(f"\nProgression : [\{bar\}] \{percent:.0f\}%")
print(f"Semaine \{p['week']\}/5 — \{len(p['skills'])\} skills acquises")
show_progress(profile)
Quelle est la différence entre une liste et un tuple en Python ?
Que produit l'expression : [n**2 for n in range(5)] ?
En Python, comment vérifier si un élément est dans une liste ?