0% ont trouvé ce document utile (0 vote)
25 vues3 pages

Classe Vecteur en Python : Héritage et Opérations

Le document présente un devoir de création d'une classe Vecteur en Python, héritant de la classe list, avec des méthodes pour effectuer des opérations mathématiques. Les objectifs incluent la compréhension de l'héritage, l'extension des fonctionnalités d'une classe et l'application d'opérations sur des objets personnalisés. Le code fourni illustre la création de vecteurs, leur addition, leur multiplication par un scalaire, le calcul de leur produit scalaire et de leur norme, tout en gérant les exceptions liées aux dimensions des vecteurs.

Transféré par

marymouine
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues3 pages

Classe Vecteur en Python : Héritage et Opérations

Le document présente un devoir de création d'une classe Vecteur en Python, héritant de la classe list, avec des méthodes pour effectuer des opérations mathématiques. Les objectifs incluent la compréhension de l'héritage, l'extension des fonctionnalités d'une classe et l'application d'opérations sur des objets personnalisés. Le code fourni illustre la création de vecteurs, leur addition, leur multiplication par un scalaire, le calcul de leur produit scalaire et de leur norme, tout en gérant les exceptions liées aux dimensions des vecteurs.

Transféré par

marymouine
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Nom Prénom: Maryame Mouine

Master: IICIA 2024 - 2026

Devoir : Création et Manipulation d'une Classe Vecteur Héritée de list

Objectifs :
1. Comprendre et manipuler l'héritage en Python.
2. Savoir étendre les fonctionnalités d'une classe existante.
3. Appliquer des opérations mathématiques sur des objets personnalisés.

Consignes :
Vous devez créer une classe nommée Vecteur, héritant de la classe list en Python, et implémenter
plusieurs méthodes spécifiques pour manipuler les objets de cette classe comme des vecteurs
mathématiques

Travail à Réaliser :
# Bonjour, je suis Maryame Mouine et ci-dessou le programme Python du devoir.
# Bonne exécution

import math

# Définition de la classe Vecteur


class Vecteur(list):

#------------------------------------------------------------------------------------------------------------------------------
# Addition de vecteurs (surcharge de l'opérateur +)
def __add__(self, other):
if len(self) != len(other):
raise ValueError("Les vecteurs doivent avoir la même dimension pour l'addition.")
return Vecteur([a + b for a, b in zip(self, other)])

#------------------------------------------------------------------------------------------------------------------------------
# Multiplication par un scalaire (surcharge de l'opérateur *)
def __mul__(self, scalar):
return Vecteur([x * scalar for x in self])

#------------------------------------------------------------------------------------------------------------------------------
# Produit scalaire
def dot(self, other):
if len(self) != len(other):
raise ValueError("Les vecteurs doivent avoir la même dimension pour le produit scalaire.")
return Vecteur(a * b for a, b in zip(self, other))

#------------------------------------------------------------------------------------------------------------------------------
# Norme du vecteur
def norm(self):
return math.sqrt(sum(x**2 for x in self))
#------------------------------------------------------------------------------------------------------------------------------
# Représentation lisible
def __repr__(self):
return f"Vecteur({super().__repr__()})"

#------------------------------------------------------------------------------------------------------------------------------
# Fonction pour demander la saisie de vecteurs
def demander_vecteur(num):
while True:
try:
vecteur = input(f"Saisir les éléments du vecteur {num} (séparés par des espaces) : ")
vecteur_list = list(map(int, vecteur.split()))
return Vecteur(vecteur_list)
except ValueError:
print("Veuillez saisir des nombres entiers valides séparés par des espaces.")

#------------------------------------------------------------------------------------------------------------------------------
# Jeu d'instruction utilisateur
# 1. Demander les deux vecteurs
v1 = demander_vecteur(1)
v2 = demander_vecteur(2)

#------------------------------------------------------------------------------------------------------------------------------
# 2. Affichage des vecteurs
print("Vecteur 1 :", v1)
print("Vecteur 2 :", v2)
#------------------------------------------------------------------------------------------------------------------------------

# 3. Vérification de la longueur des vecteurs


if len(v1) != len(v2):
print("Erreur : Les vecteurs n'ont pas la même longueur.")
else:
#------------------------------------------------------------------------------------------------------------------------------
# 4. Test d'addition de vecteurs
v3 = v1 + v2
print("Addition de vecteurs :", v3)
#------------------------------------------------------------------------------------------------------------------------------
# 5. Produit scalaire
dot_product = v1.dot(v2)
print("Produit scalaire :", dot_product)
#------------------------------------------------------------------------------------------------------------------------------
# 6. Norme des vecteurs
norm_v1 = v1.norm()
norm_v2 = v2.norm()
print("Norme de v1 :", norm_v1)
print("Norme de v2 :", norm_v2)
#------------------------------------------------------------------------------------------------------------------------------

# 7. Demander à l'utilisateur de saisir un scalaire


scalar = float(input("Saisir un scalaire pour la multiplication : "))
v4 = v1 * scalar
# Multiplication par un scalaire (surcharge de l'opérateur *)
print(" La multiplication par scalaire saisie est:", v4)

# C'est la fin du programme! Bonne journée

Explications :

1. Héritage de list : La classe Vecteur hérite de la classe Python list pour bénéficier de ses
fonctionnalités de base tout en y ajoutant des méthodes spécifiques.
2. Méthodes spéciales (__add__, __mul__, __repr__) : Ces méthodes permettent de redéfinir le
comportement des opérateurs +, * et d'assurer une représentation lisible.
3. Vérifications : Les dimensions des vecteurs sont vérifiées avant toute opération mathématique
pour éviter des erreurs logiques.
4. Gestion des exceptions : Les erreurs comme l'incompatibilité des dimensions ou l'utilisation
d'un type invalide (par exemple, multiplication avec une chaîne de caractères) déclenchent des
exceptions explicites.

Exemple d’exécution:

Saisir les éléments du vecteur 1 (séparés par des espaces) : 1 2 3


Saisir les éléments du vecteur 2 (séparés par des espaces) : 2 3 4

Vecteur 1 : Vecteur([1, 2, 3])


Vecteur 2 : Vecteur([2, 3, 4])
Addition de vecteurs : Vecteur([3, 5, 7])
Produit scalaire : Vecteur([2, 6, 12])
Norme de v1 : 3.7416573867739413
Norme de v2 : 5.385164807134504

Saisir un scalaire pour la multiplication : 4

La multiplication par scalaire saisie est: Vecteur([4.0, 8.0, 12.0])

Vous aimerez peut-être aussi