Shell C++ Python
Base Débutant Intermédiaire Maßtrise
Fonctions avancées
Arguments variables
# *args pour un nombre variable d'arguments
def additionner_tous(*nombres):
return sum(nombres)
print(additionner_tous(1, 2, 3, 4, 5)) # 15
# **kwargs pour des arguments nommés
def afficher_infos(**infos):
for cle, valeur in infos.items():
print(f"{cle}: {valeur}")
afficher_infos(nom="Alice", age=25, ville="Paris")
# Combinaison
def fonction_complete(arg1, arg2, *args, **kwargs):
print(f"arg1: {arg1}")
print(f"arg2: {arg2}")
print(f"args: {args}")
print(f"kwargs: {kwargs}")
fonction_complete(1, 2, 3, 4, nom="Bob", age=30)
Fonctions lambda
# Syntaxe : lambda arguments: expression
double = lambda x: x * 2
print(double(5)) # 10
# Avec plusieurs arguments
somme = lambda a, b: a + b
print(somme(3, 4)) # 7
# Utilisation avec map, filter, sorted
nombres = [1, 2, 3, 4, 5]
doubles = list(map(lambda x: x * 2, nombres))
pairs = list(filter(lambda x: x % 2 == 0, nombres))
# Trier avec lambda
personnes = [("Alice", 25), ("Bob", 30), ("Charlie", 20)]
par_age = sorted(personnes, key=lambda p: p[1])
print(par_age)
List Comprehensions
# Syntaxe : [expression for item in iterable if condition]
# Liste des carrés
carres = [x**2 for x in range(10)]
print(carres) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Avec condition
pairs = [x for x in range(20) if x % 2 == 0]
# Manipulation de chaĂźnes
mots = ["hello", "world", "python"]
majuscules = [mot.upper() for mot in mots]
# Nested comprehension
matrice = [[i*j for j in range(3)] for i in range(3)]
print(matrice) # [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
# Dict comprehension
nombres = [1, 2, 3, 4, 5]
carres_dict = {x: x**2 for x in nombres}
print(carres_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Set comprehension
unique = {x % 3 for x in range(10)}
print(unique) # {0, 1, 2}
Gestion des fichiers
Ăcriture dans un fichier
# Ăcrire dans un fichier
with open("exemple.txt", "w") as f:
f.write("Ligne 1\n")
f.write("Ligne 2\n")
f.write("Ligne 3\n")
# Ajouter Ă la fin
with open("exemple.txt", "a") as f:
f.write("Ligne 4\n")
# Ăcrire plusieurs lignes
lignes = ["PremiĂšre ligne\n", "DeuxiĂšme ligne\n"]
with open("multi.txt", "w") as f:
f.writelines(lignes)
Lecture depuis un fichier
# Lire tout le fichier
with open("exemple.txt", "r") as f:
contenu = f.read()
print(contenu)
# Lire ligne par ligne
with open("exemple.txt", "r") as f:
for ligne in f:
print(ligne.strip())
# Lire toutes les lignes dans une liste
with open("exemple.txt", "r") as f:
lignes = f.readlines()
print(lignes)
đĄ Astuce : Le mot-clĂ© with ferme automatiquement le fichier, mĂȘme en cas d'erreur.
Classes et Objets
class Voiture:
# Attribut de classe
nombre_roues = 4
# Constructeur
def __init__(self, marque, modele, annee):
self.marque = marque
self.modele = modele
self.annee = annee
self.vitesse = 0
# Méthode
def accelerer(self, increment):
self.vitesse += increment
print(f"Vitesse: {self.vitesse} km/h")
def freiner(self, decrement):
self.vitesse -= decrement
if self.vitesse < 0:
self.vitesse = 0
print(f"Vitesse: {self.vitesse} km/h")
# Méthode spéciale pour l'affichage
def __str__(self):
return f"{self.marque} {self.modele} ({self.annee})"
# Utilisation
ma_voiture = Voiture("Tesla", "Model 3", 2023)
print(ma_voiture)
ma_voiture.accelerer(50)
ma_voiture.freiner(20)
Héritage
class Animal:
def __init__(self, nom):
self.nom = nom
def parler(self):
pass
class Chien(Animal):
def parler(self):
return f"{self.nom} dit Woof!"
class Chat(Animal):
def parler(self):
return f"{self.nom} dit Miaou!"
# Utilisation
rex = Chien("Rex")
felix = Chat("Felix")
print(rex.parler()) # Rex dit Woof!
print(felix.parler()) # Felix dit Miaou!
Gestion des exceptions
# Try/Except basique
try:
nombre = int(input("Entrez un nombre: "))
resultat = 10 / nombre
print(f"Résultat: {resultat}")
except ValueError:
print("Ce n'est pas un nombre valide!")
except ZeroDivisionError:
print("Division par zéro impossible!")
except Exception as e:
print(f"Erreur: {e}")
else:
print("Tout s'est bien passé!")
finally:
print("Ce bloc s'exécute toujours")
# Lever une exception
def verifier_age(age):
if age < 0:
raise ValueError("L'Ăąge ne peut pas ĂȘtre nĂ©gatif")
if age < 18:
raise ValueError("Vous devez ĂȘtre majeur")
return True
try:
verifier_age(15)
except ValueError as e:
print(f"Erreur: {e}")
Modules et imports
# Importer un module complet
import math
print(math.sqrt(16))
print(math.pi)
# Importer des fonctions spécifiques
from math import sqrt, pi
print(sqrt(25))
print(pi)
# Importer avec alias
import datetime as dt
maintenant = dt.datetime.now()
print(maintenant)
# Importer tout (déconseillé)
# from math import *
# Modules utiles
import random
print(random.randint(1, 10))
print(random.choice(['a', 'b', 'c']))
import os
print(os.getcwd()) # Dossier actuel
# os.listdir() # Lister fichiers
Collections avancées
Tuples
# Tuples (immuables)
coordonnees = (10, 20)
print(coordonnees[0]) # 10
# Unpacking
x, y = coordonnees
print(f"x={x}, y={y}")
# Tuple avec un seul élément
single = (42,) # La virgule est importante!
# Retour multiple de fonction
def get_info():
return "Alice", 25, "Paris"
nom, age, ville = get_info()
Sets
# Set (éléments uniques, non ordonnés)
nombres = {1, 2, 3, 4, 5}
nombres.add(6)
nombres.add(3) # Pas de doublon
print(nombres) # {1, 2, 3, 4, 5, 6}
# Opérations sur les sets
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # Union: {1, 2, 3, 4, 5, 6}
print(a & b) # Intersection: {3, 4}
print(a - b) # Différence: {1, 2}
print(a ^ b) # Différence symétrique: {1, 2, 5, 6}
Générateurs et itérateurs
# Générateur simple
def compte_jusqua(n):
i = 1
while i <= n:
yield i
i += 1
# Utilisation
for nombre in compte_jusqua(5):
print(nombre)
# Generator expression
carres = (x**2 for x in range(10))
print(next(carres)) # 0
print(next(carres)) # 1
# Générateur infini
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
# Utiliser avec islice
from itertools import islice
fib = fibonacci()
premiers_10 = list(islice(fib, 10))
print(premiers_10)
Exercices pratiques
Créez une classe Compte bancaire avec dépÎt, retrait et historique
Ăcrivez un programme qui lit un fichier CSV et calcule des statistiques
Développez un gestionnaire de tùches avec sauvegarde dans un fichier JSON
Créez un décorateur pour mesurer le temps d'exécution d'une fonction
Implémentez une calculatrice avec gestion d'erreurs complÚte
Shell C++ Python
Base Débutant Intermédiaire Maßtrise