- Responsables :
- Besoin d'aide ?
Cette séance vise à faire découvrir la façon Python de programmer aux étudiants de BUT Informatique. L'objectif n'est pas d'apprendre la syntaxe de base (supposée connue), mais de comprendre comment écrire du code pythonique : idiomatique, lisible et professionnel.
À l'issue de cette séance, les étudiants doivent être capables de :
- ✅ Choisir la structure de données appropriée (list, dict, set, tuple)
- ✅ Utiliser les idiomes Python (comprehensions, EAFP, context managers)
- ✅ Transformer du code "traduit de C++ ou Java" en code pythonique
- ✅ Exploiter les outils natifs de Python plutôt que réinventer la roue
- ✅ Lire et comprendre du code Python professionnel
La première chose que vous allez faire est de créer un fork d'un dépôt. Pour ce faire, rendez-vous sur le lien suivant :
https://classroom.github.com/a/Ai4FFYXy
GitHub va vous créer un dépôt contenant un fork du dépôt 'IUTInfoAix/IntroPython' et s'appelant 'IUTInfoAix/IntroPython-votreUsername'. Vous apparaîtrez automatiquement comme contributeur de ce projet pour y pousser votre travail.
Une fois votre fork créé, vous pouvez ouvrir le projet directement dans GitHub Codespace :
- Rendez-vous sur votre dépôt GitHub (
IUTInfoAix/IntroPython-votreUsername
) - Cliquez sur le bouton vert Code
- Sélectionnez l'onglet Codespaces
- Cliquez sur Create codespace on main
GitHub va créer un environnement de développement complet dans le cloud. Après quelques instants, vous aurez accès à VS Code directement dans votre navigateur avec :
- Python et toutes les dépendances déjà installées
- Jupyter Notebook fonctionnel
- Accès au terminal
Pour ouvrir le notebook de TP :
- Dans l'explorateur de fichiers (à gauche), cliquez sur le fichier
notebook_seance.ipynb
- Le notebook s'ouvrira et vous pourrez exécuter les cellules
Note : GitHub offre 60 heures gratuites de Codespace par mois pour les comptes personnels.
- Python 3.8+ installé sur votre machine
- Un éditeur de code (VS Code, PyCharm, ou autre)
- Optionnel : Jupyter Notebook ou JupyterLab
# Cloner le dépôt (ou télécharger les fichiers)
git clone https://github.com/IUTInfoAix/IntroPython.git
cd IntroPython
# Créer un environnement virtuel (recommandé)
python3 -m venv ~/venv
# Activer l'environnement virtuel
source ~/venv/bin/activate
# Installer les dépendances
pip install -r requirements.txt
jupyter>=1.0.0
numpy>=1.21.0
matplotlib>=3.4.0
....
Le projet inclut un Makefile avec plusieurs commandes utiles pour faciliter votre travail :
# Afficher toutes les commandes disponibles
make help
Commandes principales :
# Lancer Jupyter Lab (pour ouvrir le notebook de TP)
make notebook
# Lancer la présentation Slidev (nécessite Node.js)
make slides
# Formater automatiquement votre code Python
make format
# Vérifier que votre code respecte PEP 8
make lint
# Vérifier le formatage + linting (sans modifier les fichiers)
make check-all
# Nettoyer les fichiers temporaires
make clean
Pour les étudiants : Les commandes make format
et make lint
sont particulièrement utiles pour vérifier que votre code suit les conventions pythoniques avant de soumettre vos exercices.
Les slides de présentation sont disponibles au format Slidev :
# Lancer la présentation Slidev (nécessite Node.js)
make slides
# Ou directement avec npx
cd slides
npx slidev slides.md
La présentation s'ouvrira dans votre navigateur à l'adresse http://localhost:3030
.
Note : Si vous n'avez pas Node.js installé, vous pouvez consulter les slides directement dans le fichier slides/slides.md
.
Horaire | Partie | Durée | Contenu |
---|---|---|---|
00:00 | Introduction | 10 min | Philosophie Python, positionnement |
00:10 | Partie 1 | 35 min | Structures de données natives + exercice |
00:45 | Partie 2 | 40 min | Idiomes Python (comprehensions, EAFP, context managers) |
01:25 | Micro-pause | 2 min | Étirements |
01:27 | Partie 3 | 15 min | Démos (NumPy, OOP, MicroPython) |
01:42 | Partie 4 | 25 min | Exercice de refactoring guidé |
02:07 | Conclusion | 10 min | Zen de Python, challenge, ressources |
-
Pendant la séance :
- Ouvrir le notebook Jupyter
- Exécuter et modifier les exemples
- Poser des questions
- Travailler en binôme sur les exercices
-
Après la séance :
- Refaire les exercices à tête reposée
- Consulter le cheat sheet régulièrement
- Tenter le challenge de la semaine
- Explorer les ressources recommandées
Relevez le défi : résolvez 1 exercice Exercism par semaine !
- 💪 Pratiquer régulièrement : la régularité bat l'intensité pour progresser en programmation
- 🧠 Penser en Python : développer les réflexes pythoniques et automatiser les bonnes pratiques
- 👥 Échanger avec la communauté : apprendre des solutions des autres et recevoir des feedbacks constructifs
- 🏅 Progresser visiblement : suivez votre évolution avec les badges et votre profil public Exercism
- S'inscrire sur Exercism : exercism.org/tracks/python
- Résoudre 1 exercice par semaine pendant 10 semaines (jusqu'au début du semestre 2)
- Appliquer les idiomes Python appris pendant la séance
- Demander du feedback aux mentors Exercism après chaque exercice
- Partager vos solutions avec vos camarades pour échanger des astuces
- Montrer votre progression : profil public, badges collectés
Les exercices Exercism sont organisés par difficulté. Voici une progression suggérée :
- Hello World - Prise en main
- Two Fer - Fonctions et paramètres par défaut
- Raindrops - Conditions et modulos
- Leap - Logique booléenne
- Pangram - Sets et manipulation de chaînes
- Isogram - Algorithmes sur les chaînes
- Scrabble Score - Dictionnaires
- Word Count - Collections et parsing
- Run Length Encoding - Algorithmes de compression
- Robot Simulator - POO et états
- ⏰ Planifiez : bloquez 30-60 minutes par semaine dans votre agenda
- 🔄 Itérez : soumettez une première solution, puis améliorez-la avec les feedbacks
- 📚 Apprenez : lisez les solutions des autres après avoir terminé
- 🤝 Entraidez-vous : créez un groupe de discussion avec vos camarades
"The only way to learn a new programming language is by writing programs in it." - Dennis Ritchie
- Real Python - Tutoriels de qualité
- Python Tricks - Livre d'idiomes
- Fluent Python - Livre avancé
- Exercism - Python Track
- LeetCode - Problèmes algorithmiques
- CodinGame - Apprendre en jouant
- Python Koans - Apprentissage par TDD
Calcul scientifique et data science :
- NumPy - Calcul numérique
- Pandas - Manipulation de données
- Matplotlib - Visualisation
- SciPy - Algorithmes scientifiques
- Scikit-learn - Machine learning
Développement web :
Automatisation et scripts :
- Requests - Requêtes HTTP
- BeautifulSoup - Web scraping
- Click - CLI élégantes
Tests et qualité :
- pytest - Framework de tests
- black - Formatage automatique
- flake8 - Analyse statique
- mypy - Type checking
Python embarqué :
- MicroPython - Python pour microcontrôleurs
- CircuitPython - Fork d'Adafruit
- Documentation STeaMi - Pour vos cartes
-
VS Code + extensions Python
- Python (Microsoft)
- Pylance
- Python Docstring Generator
- autoDocstring
-
PyCharm (Community ou Professional)
- IDE complet avec débogueur intégré
- Refactoring intelligent
- Support Django/Flask
-
Jupyter Lab
- Pour l'exploration interactive
- Notebooks intégrés
# Formater automatiquement
pip install black
black mon_fichier.py
# Vérifier le style PEP 8
pip install flake8
flake8 mon_fichier.py
# Analyse statique approfondie
pip install pylint
pylint mon_fichier.py
# Type checking
pip install mypy
mypy mon_fichier.py
# Tests unitaires
pip install pytest
pytest tests/
{
"[python]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
"isort.args": ["--profile", "black"],
"editor.rulers": [88],
"editor.insertSpaces": true,
"editor.tabSize": 4,
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"jupyter.askForKernelRestart": false,
}
R : Oui ! Cette séance ne porte pas sur la syntaxe de base mais sur les idiomes pythoniques. Même les développeurs expérimentés découvrent souvent de nouvelles façons d'écrire du code plus élégant et efficace.
R : Cette séance se concentre sur les fondamentaux du langage et la bibliothèque standard. Les bibliothèques tierces seront vues dans d'autres cours spécialisés (data science, web, etc.).
R : Souvent oui (list comprehensions, fonctions built-in optimisées en C), mais le principal avantage est la lisibilité et la maintenabilité. "Premature optimization is the root of all evil."
R : PEP 8 est un guide, pas une loi. L'important est la cohérence dans un projet. Cela dit, la plupart des projets Python professionnels suivent PEP 8.
R : Règle générale : si la comprehension tient sur 1-2 lignes et reste lisible, utilisez-la. Sinon, préférez une boucle explicite avec un bon nom de variable.
R : Python est lent pour du calcul pur, mais :
- Les bibliothèques (NumPy, etc.) sont écrites en C/Fortran
- Le temps de développement est souvent plus important que le temps d'exécution
- Pour les goulots, on peut optimiser (Cython, Numba, PyPy)
- Python excelle en temps de prototypage
# Vérifier que Jupyter est installé
pip install jupyter
# Lancer Jupyter
jupyter notebook
# Ou JupyterLab (interface moderne)
pip install jupyterlab
jupyter lab
# Vérifier que vous êtes dans l'environnement virtuel
# Réinstaller les dépendances
pip install -r requirements.txt
# Utiliser l'encodage UTF-8 explicitement
with open('resultats.csv', encoding='utf-8') as f:
contenu = f.read()
# Formater automatiquement avec black
pip install black
black mon_fichier.py
# Ou vérifier avec flake8
pip install flake8
flake8 mon_fichier.py
Si vous utilisez ce matériel et avez des suggestions d'amélioration :
- Ouvrez une issue sur GitHub
- Proposez une pull request
- Contactez sebastien.nedjar@univ-amu.fr
Questions, bugs, suggestions ? N'hésitez pas à :
- Poser des questions en cours
- Consulter la FAQ ci-dessus
- Chercher sur Stack Overflow (tag
[python]
)
Ce matériel pédagogique est mis à disposition sous licence Creative Commons BY-SA 4.0.
Vous êtes libre de :
- Partager : copier et redistribuer
- Adapter : remixer, transformer et créer à partir du matériel
Selon les conditions suivantes :
- Attribution : créditer l'auteur original
- Partage dans les mêmes conditions : même licence pour les dérivés
Inspiré par :
- The Zen of Python (PEP 20)
- PEP 8 - Style Guide for Python Code
- La communauté Python
Enseignant : Sébastien NEDJAR Email : sebastien.nedjar@univ-amu.fr
Bon apprentissage ! 🐍
"Python is a language where you can focus on the problem, not the syntax"