- Les Bases des Fonctions Python
- Conversion des types (Casting)
- Variables
- Commentaires
- Conditions (IF/ELSE)
- Exercices pratiques
- Tableaux (listes)
- Tuples (listes constantes)
- Sets (listes sans doublon)
- Dictionaries (liste clé : valeur)
- Classes/Objects | Introduction à l'orienté-objet
- Gestion des fichiers
- JSON (JavaScript Object Notation)
- Gestion des Exceptions avec
try-except
print("Hello, Python!") # Afficher un messageprint(): Sert à afficher des informations dans la console.
nom = input("Quel est ton nom ? ") # Récupérer des données de l'utilisateur
print("Bonjour, " + nom + " !")input(): Permet à l'utilisateur de saisir des données (toujours retournées sous forme de chaîne).
age = 25
print(type(age)) # <class 'int'>type(): Indique le type d'une variable (int, str, float, etc.).
Python permet de convertir les types grâce à des fonctions appelées casting :
int(): Convertir en entier.float(): Convertir en décimal.str(): Convertir en chaîne de caractères.
# Conversion de types
nombre = "42"
print(int(nombre)) # Convertir une chaîne en entier
print(float(nombre)) # Convertir une chaîne en nombre décimal
# Combinaison
age = 25
print("J'ai " + str(age) + " ans.") # Conversion pour concaténation- Doit commencer par une lettre ou un underscore (
_). - Peut contenir des chiffres, mais ne doit pas commencer par un chiffre.
- Doit être unique dans un programme.
# Déclaration de variables
nom = "Alice"
age = 30
pi = 3.14
print(nom, age, pi)Les commentaires sont ignorés par Python mais utiles pour documenter ton code :
# Ceci est un commentaire sur une seule ligne.
"""
Ceci est un commentaire
multiligne.
"""if condition:
# Bloc de code si la condition est vraie
elif autre_condition:
# Bloc si l'autre condition est vraie
else:
# Bloc si aucune condition n'est vraieage = 20
if age >= 60:
print("Vous êtes senior.")
elif age >= 18:
print("Vous êtes adulte.")
else:
print("Vous êtes mineur.")Écrivez un programme qui demande à l'utilisateur :
- Son nom
- Son âge
Puis affiche : Bonjour <nom>, vous avez <âge> ans.
Solution
nom = input("Quel est votre nom ? ")
age = input("Quel est votre âge ? ")
print("Bonjour " + nom + ", vous avez " + age + " ans.")Demandez à l'utilisateur son âge et dites-lui s'il peut regarder un film d'horreur (âge minimum : 13 ans). Si non, précisez combien d'années il doit attendre.
Solution
age = int(input("Quel est votre âge ? "))
if age >= 13:
print("Autorisé à voir le film.")
else:
print("Accès interdit, il vous manque " + str(13 - age) + " ans.")Les tableaux permettent de stocker plusieurs valeurs dans une seule variable.
Exemple :
fruits = ["pomme", "banane", "cerise"]
print(fruits[0]) # pomme
print(len(fruits)) # Nombre d'éléments : 3nombres = [10, 20, 30]
print(len(nombres)) # 3fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
fruits[0] = "strawberry"fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
fruits[0:2] = ["strawberry","grappe"]fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
fruits.insert(0,"watermelon")
print(fruits)
# ["watermelon", "apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
fruits.append("peach")
print(fruits)
# ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango","peach"]fruits = ['watermelon', 'strawberry', 'grappe', 'watermelon', 'cherry', 'orange', 'kiwi', 'melon', 'mango', 'peach']
fruits.extend( ["tomato","avocado"] )
print(fruits)
# ['watermelon', 'strawberry', 'grappe', 'watermelon', 'cherry', 'orange', 'kiwi', 'melon', 'mango', 'peach', 'tomato', 'avocado']fruits = ['watermelon', 'strawberry', 'grappe']
fruits.remove("strawberry")
print(fruits)
# ['watermelon', 'grappe']fruits = ['watermelon', 'strawberry', 'grappe']
fruits.pop(1)
print(fruits)
# ['watermelon', 'grappe']alternative
fruits = ['watermelon', 'strawberry', 'grappe']
del fruits[1]
print(fruits)
# ['watermelon', 'grappe']fruits = ['watermelon', 'strawberry', 'grappe']
fruits.pop()
print(fruits)
# ['watermelon', 'strawberry']fruits = ['watermelon', 'strawberry', 'grappe']
del fruits
print(fruits)
# Not Definedfruits = ['watermelon', 'strawberry', 'grappe']
fruits.clear()
print(fruits)
# result: []fruits = ['watermelon', 'strawberry', 'grappe']
# foreach
for fruit in fruits:
print("Le fruit actuelle est le: "+fruit)
# result: []fruits = ['watermelon', 'strawberry', 'grappe']
# for
for index in range(0,len(fruits)):
print("Le fruit actuelle est le: "+fruits[index])
# result: []"salut" = ["s","a","l","u","t"]
nums = [9,6,3,6,7]
nums.sort()
print(nums)
# result: [3,6,6,7,9]nombres = [10, 20, 30]
print(nombres.index(20)) # 1ERREUR A NE PAS FAIRE
# un tableau qui pointe sur le meme tableau manipule les memes donnees
# manipuler (modifier un element, supprimer un element)
nombres = [10, 20, 30]
nombres_2 = nombres
nombres_2[0] = 1000
print(nombres) # [1000, 20, 30]
print(nombres_2) # [1000, 20, 30]Voici comment faire une copie de tableau pour le manipuler sous une autre forme.
nombres = [10, 20, 30]
nombres_2 = nombres.copy()
nombres_2[0] = 1000
print(nombres) # [10, 20, 30]
print(nombres_2) # [1000, 20, 30]fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
nouvelle_list_1 = fruits[2:5] # ["cherry", "orange", "kiwi"]
nouvelle_list_2 = fruits[2:] # ["cherry", "orange", "kiwi", "melon", "mango"]
nouvelle_list_3 = fruits[:2] # ["apple", "banana"]fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
if "apple" in fruits:
print("Ce fruit existe dans notre liste")
else:
print("Ce fruit n'existe pas dans notre liste")fruits = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
user_input = input("Which fruits is in the list? ")
if user_input.lower() in fruits:
print("Ce fruit existe dans notre liste")
else:
print("Ce fruit n'existe pas dans notre liste")for fruit in fruits:
print(fruit)**Method** **Description**
append() # Ajout element a la fin de la liste
clear() # Vide la liste
copy() # Retourne une copy de la liste
count() # Recupere le nombre de fois ou un element est present dans le tableau
extend() # Combine deux liste
index() # Retourne l'index d'une valeur
insert() # Ajoute un element a la position souhaite
pop() # Supprime un element a une position
remove() # Supprime un element qui matche la valeur
reverse() # Renverse l'ordre de la liste
sort() # Trie une liste, et la garde trierfruits = ['banana','melon','watermelon']
fruits_permanents = tuple(fruits[0:2])
# fruits_permanents est une variable de type list et constant => tuple (inalterable)fruits = ['banana','melon','watermelon']
fruits_permanents = tuple(fruits[0:2])
(banana, melon) = fruits_permanents
print(banana) # banana
(x, y) = fruits_permanents
print(x) # bananaCette structure de donnee ne permet pas les doublons.
fruits = ['banana','peach','mango','banana']
fruits_once = set(fruits)
print(fruits_once) # ('banana','peach','mango')mon_set = {1, 2, 3}
mon_set.add(4) # Ajoute 4 au set
print(mon_set) # {1, 2, 3, 4}mon_set = {1, 2, 3}
mon_set.remove(2) # Supprime 2
print(mon_set) # {1, 3}# un tableau avec cle et valeur
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
car = {year: 1969}
car = dict(year:1969
)print(car['brand']) # Ford
print(car.get('brand')) # Fordcar = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
k = car.keys()
print(k) # ['brand','model','year']v = car.values()
print(v) # ["Ford","Mustang","1969"]car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
car["brand"] = "Mitsubichi"
print(car.values()) # ["Mitsubichi","Mustang","1969"]car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
modif = {"brand":"Mitsubichi","year": 2020}
car.update(modif)
# car.update({"brand":"Mitsubichi","year": 2020})
print(car.values()) # ["Mitsubichi","Mustang","2020"]car.pop('model')
# { "year": 2020, "brand": "Mitsubichi"}car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
car.popitem()
# { "brand": "Ford", "model": "Mustang" }class Car:
brand = "Toyota" # par defaut la marque sera toyotacar = Car() # instanciation de notre prototype
print(car.brand) # afficher la marque de notre fameuse voiture creerest la pour construire l'objet, de maniere individuel
class Car:
id = 0 # par defaut c'est 0
brand = "Toyota" # par defaut la marque toyota
# Method, Function
def __init__(self, brand, id):
self.id = id
self.brand = brand
print('Creation de la voiture')
def setBrand(self, brand):
self.brand = brandclass Car:
id = 0 # par defaut c'est 0
brand = "Toyota" # par defaut la marque toyota
km = 0
# Method, Function
def __init__(self, brand, id):
self.id = id
self.brand = brand
print('Creation de la voiture')
def __str__(self):
print(f"Je suis une voiture de type {self.brand} numero #{self.id}")
def drive(self,km):
self.km = self.km + km
print(f"Vous avez roulez {self.km}km.")
- name
- age
- une fonction qui presente la personne
- une fonction qui permet a la personne d'apprendre -> apprendre(self,study)
- on accumule les connaissance, ex:
zeev.apprend("Violon")
zeev.apprend("Piloter un avion")
- une fonction qui affiche tout ce qu'elle a etudier
zeev.aAppris() # Violon
# Piloter un avion
Correction
class Person:
# functions
def __init__(self, name, age):
self.name = name
self.age = age
self.matters = []
print(f"{name} vient de naitre, mais il a quand meme {age} ans")
def greet(self):
print(f"Je m'appel {self.name}, et j'ai {self.age} ans.")
def learned(self, matter):
self.matters.append(matter)
print(f"{self.name} a appris {matter}")
def have_learned(self):
if len(self.matters) > 0:
for m in self.matters: # foreach
print(f"\t{m}")# implementation
zeev = Person("Zeev",30)
zeev.greet()
zeev.learned("HTML")
zeev.learned("CSS")
zeev.learned("Javascript")
zeev.have_learned() # affiche tout ce qu'il a etudierdel zeev.age # on libere de la memoire
print(zeev.age) # age non defini- On peut supprimer une instance
- petit rappel une instance c'est:
-
dark_vador = Person("Dark Vador",30) # creer une instance
-```python del dark_vador # on supprime dark vador (merci luke) -
- petit rappel une instance c'est:
class Person:
def __init__(self,name):
self.name = name
def setName(self,name):
self.name = name
def getName(self):
return self.name
# implementation
dark_miaul = Person("Luke")
print(dark_miaul.getName()) # Luke
dark_miaul.setName("Dark Miaul")
print(dark_miaul.getName()) # Dark Miaul- use case: valider des donnees selon des criteres
class Person:
def __init__(self,name):
self.name = name
def setName(self,name):
if len(name) < 9:
self.name = name
else:
print("ton nom a plus de 8 caractere, trop long!")
def getName(self):
return self.name
# implementation
dark_miaul = Person("Luke")
print(dark_miaul.getName()) # Luke
dark_miaul.setName("DarkMiaul") # affiche une erreur: 9 caracteres trop long
dark_miaul.setName("DarkMiol") # affiche une erreur: 9 caracteres trop long
print(dark_miaul.getName()) # DarkMiolL'heritage permet de partager les elements d'un ensemble dans un autre:
- Une personne a un nom
- Un etudiant est une personne, donc elle possedera un nom
- On aura pas besoin de creer le nom il est automatiquement appeler sur la classe superieur
class Person:
def __init__(self,name):
self.name = name
def setName(self,name):
if len(name) < 9:
self.name = name
else:
print("ton nom a plus de 8 caractere, trop long!")
def getName(self):
return self.name
class Student(Person):
pass- autre maniere d'herite et d'avoir des propriete et fonctions qui ne sont pas dans la class Person:
class Person:
def __init__(self,name):
self.name = name
def setName(self,name):
if len(name) < 9:
self.name = name
else:
print("ton nom a plus de 8 caractere, trop long!")
def getName(self):
return self.name
class Student(Person):
# la propriete school_name est defini et VISIBLE que sur l'objet Student. (pas la class PERSON 😡)
def __init__(self,name,age,school_name):
super().__init__(name,age)
self.school_name
def get_school_name(self):
return self.school_name
def set_school_name(self, school_name):
self.school_name = school_name
def advantage(self):
print("Je suis une fonction qui n'existe pas dans l'ensemble(class) Person")- un Vehicule:
- Bus
- Moto
- Voiture
class Vehicle:
def __init__(self,wheels,motor,fuel):
self.wheels = wheels
self.motor = motor
self.fuel = fuel
def show(self):
print(f"vehicle:\nw:{self.wheels} \nm:{self.motor} \nf:{self.fuel}")
def drive(self):
print("Je roule en vehicle")
class Bus(Vehicle):
def __init__(self, name, has_microphone):
self.has_microphone = has_microphone
super().__init__(8,"essence","super")
self.name = name
print(f"{self.name}: {self.wheels}")
class Moto(Vehicle):
def __init__(self,wheels,name,has_top_case):
self.has_top_case = has_top_case
super().__init__(wheels,"GP","95")
self.name = name
print(f"{self.name}: {self.wheels}")
def drive(self):
super().drive()
print("Je roule en moto")
class Car(Vehicle):
def __init__(self,name):
super().__init__(4,"battery","electric")
self.name = name
print(f"{self.name}: {self.wheels}")
def drive(self):
print("Je roule en voiture")
toyota = Car('Toyota')
bus_magic = Bus('Le bus magique', True)
moto = Moto(2,'Harley Davidson', True)
for v in (toyota, bus_magic, moto):
v.show()
v.drive()- lorsque l'enfant possede la methode drive(), on dit qu'elle override, (= elle n'execute pas la methode parente).
Lire tout le fichier :
file = open('names.txt')
whole_file = file.read()Lire ligne par ligne :
file = open('names.txt')
line = file.readline() # Affiche la première ligne
line = file.readline() # Affiche la deuxième ligneTraiter le document ligne par ligne :
file = open('names.txt', 'r')
while True:
line = file.readline()
if not line:
break
print(line)Rajouter des noms dans un fichier :
f = open('names.txt', 'a') # "a" pour ajouter à la fin du fichier
while True:
name = input('Entrez un nom: ')
if len(name) == 0:
break
f.write(name)
f.close() # Ferme le fluxSupprimer tout le contenu d'un fichier :
f = open('names.txt', 'w') # 'w' pour écraser le contenu
f.write('')
f.close()Créer un nouveau fichier vierge :
name = input('Entrez un nom de fichier: ')
f = open(f'{name}.txt', 'x')
f.close()Créer en masse des fichiers :
for filename in ['html', 'css', 'js']:
open(filename + ".txt", "x") # Crée un fichier selon la variableSupprimer un fichier :
import os
if os.path.exists("fichier.txt"):
os.remove("fichier.txt")
else:
print("Le fichier n'existe pas.")JSON est un format léger d'échange de données, facile à lire et à écrire pour les humains, ainsi qu'à analyser et générer pour les machines.
Un fichier JSON est constitué de paires clé-valeur, similaires aux dictionnaires Python :
{
"nom": "Alice",
"age": 25,
"langages": ["Python", "JavaScript"]
}Pour lire un fichier JSON en Python, utilisez la bibliothèque intégrée json :
import json
# Lire le contenu du fichier JSON
with open('data.json', 'r') as file:
data = json.load(file) # Charge le JSON en un dictionnaire Python
print(data)Pour écrire des données dans un fichier JSON :
import json
# Exemple de données
data = {
"nom": "Alice",
"age": 25,
"langages": ["Python", "JavaScript"]
}
# Écrire dans un fichier JSON
with open('data.json', 'w') as file:
json.dump(data, file, indent=4) # Ajout d'une indentation pour une meilleure lisibilitéPour mettre à jour les données existantes dans un fichier JSON :
import json
# Charger les données existantes
with open('data.json', 'r') as file:
data = json.load(file)
# Modifier les données
data["age"] = 26
# Réécrire les données dans le fichier
with open('data.json', 'w') as file:
json.dump(data, file, indent=4)Voici comment combiner la manipulation des fichiers et le JSON :
- Créer un fichier JSON vide :
import json
# Initialiser des données vides
data = {}
# Créer un fichier JSON vide
with open('new_file.json', 'w') as file:
json.dump(data, file, indent=4)- Ajouter des données à un fichier JSON :
import json
new_entry = {
"nom": "Bob",
"age": 30,
"langages": ["Java", "Go"]
}
# Charger les données existantes
with open('data.json', 'r') as file:
data = json.load(file)
# Ajouter la nouvelle entrée
if "personnes" not in data:
data["personnes"] = []
data["personnes"].append(new_entry)
# Réécrire les données dans le fichier
with open('data.json', 'w') as file:
json.dump(data, file, indent=4)- Supprimer une entrée d'un fichier JSON :
import json
# Charger les données existantes
with open('data.json', 'r') as file:
data = json.load(file)
# Suppression basée sur une condition
if "personnes" in data:
data["personnes"] = [p for p in data["personnes"] if p["nom"] != "Bob"]
# Réécrire les données mises à jour
with open('data.json', 'w') as file:
json.dump(data, file, indent=4)En Python, la gestion des erreurs est essentielle pour éviter les plantages de programme lorsque des erreurs inattendues surviennent. La structure try-except permet de gérer ces situations de manière propre et contrôlée.
try:
# Code qui pourrait générer une erreur
operation = 10 / 0
except ZeroDivisionError:
# Code à exécuter en cas d'erreur
print("Division par zéro interdite !")Voici quelques types d'exceptions courantes que vous pourriez rencontrer :
ZeroDivisionError: Division par zéro.ValueError: Erreur de type pour une valeur incorrecte.FileNotFoundError: Fichier introuvable.TypeError: Type incorrect utilisé.IndexError: Indice hors des limites d'une liste.KeyError: Clé inexistante dans un dictionnaire.
try:
fichier = open("inexistant.txt", "r")
contenu = int(fichier.read())
print(10 / contenu)
except FileNotFoundError:
print("Le fichier n'existe pas.")
except ValueError:
print("Erreur : Impossible de convertir le contenu en entier.")
except ZeroDivisionError:
print("Erreur : Division par zéro détectée.")else: S'exécute si aucune exception n'est levée.finally: S'exécute quoi qu'il arrive (utile pour nettoyer les ressources).
try:
fichier = open("data.txt", "r")
contenu = fichier.read()
print("Lecture réussie :", contenu)
except FileNotFoundError:
print("Erreur : Le fichier est introuvable.")
else:
print("Aucune erreur détectée.")
finally:
print("Fin de l'exécution.")Vous pouvez lever vos propres exceptions avec l'instruction raise :
def verifier_age(age):
if age < 0:
raise ValueError("L'âge ne peut pas être négatif !")
print("Âge valide :", age)
try:
verifier_age(-5)
except ValueError as e:
print("Erreur détectée :", e)Vous pouvez capturer l'objet exception pour plus de détails :
try:
resultat = 10 / 0
except ZeroDivisionError as e:
print(f"Erreur capturée : {e}")