diff --git a/Semaine_04/Bibliotheque/functions.py b/Semaine_04/Bibliotheque/functions.py index 56c6a6a..c79e3ef 100644 --- a/Semaine_04/Bibliotheque/functions.py +++ b/Semaine_04/Bibliotheque/functions.py @@ -5,6 +5,7 @@ def add_new_book(book_list: list[dict[str, str]], book: dict[str, str]): # On pr if book in book_list: return f"{book["Title"].upper()} y est déjà." book_list.append(book) + save(book_list) return f"{book["Title"].upper()} a été ajouté." def take_out_book(book_list: list[dict[str, str]], title: str): @@ -12,6 +13,7 @@ def take_out_book(book_list: list[dict[str, str]], title: str): for book in book_list: if book["Title"].lower() == title.lower(): book_list.remove(book) + save(book_list) return f"{title.upper()} a été retiré." return f"{title.upper()} n'y est pas." @@ -39,7 +41,7 @@ def search_book_by_letter(book_list: list[dict[str, str]], letter: str): """Cherche un livre par lettre de départ""" results = [] for book in book_list: - if book["Title"].startswith(letter): + if book["Title"].lower().startswith(letter): results.append(book) return results if len(results) > 0 else "Pas de résultat." @@ -53,4 +55,4 @@ def save(book_list): def load(): """Récupère le contenu d'un fichier JSON""" with open("books.json") as json_file: - return json.load(json_file) \ No newline at end of file + return json.load(json_file) diff --git a/Semaine_04/Jour_03.md b/Semaine_04/Jour_03.md index bacddf8..ae0607c 100644 --- a/Semaine_04/Jour_03.md +++ b/Semaine_04/Jour_03.md @@ -51,4 +51,11 @@ objet.append({"titre": "Alice aux pays", "auteur": "Caroll"}) with open("livres.json", "w") as fichier_json: json.dump(objet, fichier_json, indent= 4) -``` \ No newline at end of file +``` + +## Les classes + +### Méthodes "Dunder" + +- __init__ +- __repr__ \ No newline at end of file diff --git a/Semaine_04/ProgOrObj/.python-version b/Semaine_04/ProgOrObj/.python-version new file mode 100644 index 0000000..e4fba21 --- /dev/null +++ b/Semaine_04/ProgOrObj/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/Semaine_04/ProgOrObj/README.md b/Semaine_04/ProgOrObj/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Semaine_04/ProgOrObj/fractions.py b/Semaine_04/ProgOrObj/fractions.py new file mode 100644 index 0000000..5ce3a67 --- /dev/null +++ b/Semaine_04/ProgOrObj/fractions.py @@ -0,0 +1,33 @@ +import fractions + + +class Fraction: + numerator = 1 + denominator = 1 + + def __init__(self, numerator, denominator): + self.numerator = numerator + self.denominator = denominator + + def quotient(self): + """[Fraction] Chiffre sur Chiffre""" + return self.numerator / self.denominator + + def plus(self, fraction): + """[Fraction] Addition de deux fractions""" + num = (self.numerator * self.denominator) + (self.denominator + fraction.numerator) + den = self.denominator * fraction.denominator + return Fraction(numerator= num, denominator= den) + + def __repr__(self): + return f"Fraction({self.numerator}/{self.denominator})" + +tiers = Fraction(numerator= 1, denominator= 3) +quart = Fraction(1, 4) + +# print(tiers.__dict__) +# print(quart.__dict__) +# print(Fraction.__dict__) + +fraction = tiers.plus(quart) +print(fraction) \ No newline at end of file diff --git a/Semaine_04/ProgOrObj/fractions_theorie.py b/Semaine_04/ProgOrObj/fractions_theorie.py new file mode 100644 index 0000000..6d3fb8b --- /dev/null +++ b/Semaine_04/ProgOrObj/fractions_theorie.py @@ -0,0 +1,38 @@ +from pprint import pprint + +prenom = "John" # crée une instance (obj) de type 'str' et l'initialise avec la valeur 'John' +nom = str('Doe') # crée une instance (obj) de type 'str' et l'initialise avec la valeur 'Doe' +adress = str() # crée une instance (obj) de type 'str' + +# list, dict, tuple, set, bool => types primitives + +class Fraction: # pour se differencier des types primitifs + numerateur = 1 + denominateur = 1 + + def quotient(self): # self = tiers /quart + return self.numerateur / self.denominateur + +tiers = Fraction() # crée une instance (obj) de type 'Fraction' +tiers.numerateur = 1 +tiers.denominateur = 3 +quart = Fraction() +quart.numerateur = 1 +quart.denominateur = 4 + +print(tiers.__dict__) +print(quart.__dict__) + +# Mapping proxy +# pprint(Fraction.__dict__) +# pprint(tiers.__dict__) +# print(tiers.denominateur) + +# 2 points de vue: Fraction (classe) et tiers (objet) +print(Fraction.quotient) # +print(tiers.quotient) # > +# + +print(tiers.quotient()) # TypeError: Fraction.dire_bonjour() takes 0 positional arguments but 1 was given +# Les methodes lies aux objets ont besoin de savoir QUI les a appeler +print(quart.quotient()) \ No newline at end of file diff --git a/Semaine_04/ProgOrObj/main.py b/Semaine_04/ProgOrObj/main.py new file mode 100644 index 0000000..e69de29 diff --git a/Semaine_04/ProgOrObj/pyproject.toml b/Semaine_04/ProgOrObj/pyproject.toml new file mode 100644 index 0000000..f732692 --- /dev/null +++ b/Semaine_04/ProgOrObj/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "progorobj" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [] diff --git a/Semaine_04/ProgOrObj/uv.lock b/Semaine_04/ProgOrObj/uv.lock new file mode 100644 index 0000000..215c721 --- /dev/null +++ b/Semaine_04/ProgOrObj/uv.lock @@ -0,0 +1,8 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" + +[[package]] +name = "progorobj" +version = "0.1.0" +source = { virtual = "." }