Reupload (purge)
This commit is contained in:
@@ -0,0 +1 @@
|
||||
3.12
|
||||
@@ -0,0 +1,59 @@
|
||||
import fractions
|
||||
|
||||
|
||||
class Fraction:
|
||||
numerator = 1
|
||||
denominator = 1
|
||||
|
||||
def __init__(self, numerator, denominator):
|
||||
self.numerator = numerator
|
||||
self.denominator = denominator
|
||||
self.simplifier()
|
||||
|
||||
def __mul__(self, factor: int | Self):
|
||||
if isinstance(factor, int):
|
||||
return Fraction(
|
||||
numerator = self.numerator * factor,
|
||||
denominator = self.denominator
|
||||
)
|
||||
return Fraction(
|
||||
numerator = self.numerator * factor.numerator,
|
||||
denominator = self.denominator * factor.denominator
|
||||
)
|
||||
|
||||
def __rmul__(self, number: int):
|
||||
return self.__mul__(number)
|
||||
|
||||
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)
|
||||
|
||||
@staticmethod
|
||||
def pgcd( a, b):
|
||||
"""Calcul du PGCD de deux entiers naturels"""
|
||||
if b == 0:return a
|
||||
return Fraction.pgcd(a= b, b= a % b)
|
||||
|
||||
def simplifier(self):
|
||||
a = self.numerator
|
||||
b = self.denominator
|
||||
pgcd = Fraction.pgcd(a, b)
|
||||
|
||||
self.numerator = self.numerator // pgcd # // force la division à ne PAS donner de float
|
||||
self.denominator //= pgcd # C'est la même chose que dessus
|
||||
|
||||
def __repr__(self):
|
||||
return f"Fraction({self.numerator}/{self.denominator})"
|
||||
|
||||
tiers = Fraction(numerator= 1, denominator= 3)
|
||||
quart = Fraction(1, 4)
|
||||
|
||||
fraction = tiers.plus(quart)
|
||||
print(fraction)
|
||||
|
||||
@@ -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) # <function Fraction.dire_bonjour at 0x100eec720>
|
||||
print(tiers.quotient) # <bound method Fraction.dire_bonjour of <__main__.Fraction object at 0x1028937d0>>
|
||||
# <bound method Fraction.dire_bonjour of tiers>
|
||||
|
||||
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())
|
||||
@@ -0,0 +1,7 @@
|
||||
[project]
|
||||
name = "progorobj"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = []
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
version = 1
|
||||
revision = 3
|
||||
requires-python = ">=3.12"
|
||||
|
||||
[[package]]
|
||||
name = "progorobj"
|
||||
version = "0.1.0"
|
||||
source = { virtual = "." }
|
||||
Reference in New Issue
Block a user