Python orienté objet

Besoin d'aide

a marqué ce sujet comme résolu.

Bonjour,

Je suis débutante en python j’ai besoin de quelqu’un pour m’aider à résoudre cet exercice en python orienté objet.

J’en serai très reconnaissante.

Définir la classe Ville qui contient :

  1. l’initialiseur init(nom, population)
  2. la propriété nom : le nom de la ville.
  3. la propriété population : le nombre d’habitants de la ville.
  4. la méthode eq(self, v) qui retourne vrai si les villes self et v sont les mêmes (même nom et même nombre d’habitants), faux sinon.
  5. la m´méthode str(self) qui retourne une chaine de caractères contenant le nom de la ville et, entre parenthèses, sa population.

Définir la classe Route qui contient :

  1. l’initialiseur init(self, v1, v2, distance) qui initialise une route reliant les deux villes v1 et v2.
  2. la propriété ville1 : la première ville au bout de la route (l’ordre des villes est arbitraire).
  3. la propriété ville2 : la deuxième ville.
  4. la propriété distance qui retourne la distance entres ces deux villes (longueur de la route).
  5. la m´méthode circuit(self) qui retourne vrai si la route self relie une ville `a la même ville, faux sinon.
  6. la méthode contains(self, v) qui retourne vrai si la ville v est une des deux villes de la route, faux sinon.

Salut, tu veux qu’on t’aide sur quoi exactement ? Qu’est ce que tu n’arrive pas à faire ? Qu’est ce qui te bloque ? Qu’est ce que tu as essayé ?

pyoroalb

je ne sais même pas par quoi commencer j’ai jamais fait python orienté objet je veux quelqu’un qui m’aide à résoudre cet exo

je ne sais même pas par quoi commencer j’ai jamais fait python orienté objet je veux quelqu’un qui m’aide à résoudre cet exo

Camie

Je peux te conseiller la lecture de ce tutoriel pour justement apprendre la programmation orienté objet en Python, tu seras alors d’écrire les classes et les méthodes qui te sont demandées.

L’exercice en soit n’est pas très compliqué pour quelqu’un qui débute en Python.

Mais il faut savoir ce qu’est une classe et comment en définir une. Les premiers chapitres du tutoriel de @entwanne t’aideront. Tu n’as pas besoin de l’héritage pour l’exercice mais tu devras lire le chapitre “Opérateurs”. Notamment pour comprendre ce qu’on te demande lorsqu’on te demande d’implémenter __add__ et __str__.

+2 -0

Bonjour j’ai fait une partie je ne sais pas si c’est juste ….avez vous une idée comment je peux utiliser la méthode contains

#!/usr/bin/python3
#-*- coding: utf-8 -*-
#*********************************************** EXO1*********************************************
import math
class Ville:
	
	def __init__(self, nom, population):
		self._nom = nom
		self._population = population 

	@property
	def nom(self):
		return self._nom
	@property
	def population(self):
		return self._population
	def __eq__(self, v):
		if self._nom == v._nom and self._population == v._population : 
			return True
		else :
			return False
	def __str__(self):
		return f'{self._nom}({self._population})'
	

		

class Route:		
	def __init__(self, v1, v2, distance):
		self._v1 = v1
		self._v2 = v2
		self._distance = distance 
		
	@property
	def v1(self):
		return self._v1
	@property
	def v2(self):
		return self._v2
	@property
	def distance(self):
		return self._distance
		
	def circuit(self):
		if self._v1 == self._v2:
			return True
		else:
			return False
	
	def __contains__(self, v):
		if v == self._v1 or v ==self._v2:
			return True
		else :
			return False
	
	
	
			

		
def main():
	#******Classe Ville Test*********
	paris = Ville('Paris', 10784830)
	paris2 = Ville('Paris', 10784830)
	arras = Ville('Arras', 131047)
	lyon = Ville('Lyon', 1659001)
	nantes = Ville('Nantes', 650081)
	strasbourg = Ville('Strasbourg', 467438)
	marseille = Ville('Marseille', 1590867)
	montpellier = Ville('Montpellier', 440896)
	poitiers = Ville('Poitiers', 131499)
	brest = Ville('Brest', 201741)
	bordeaux = Ville('Bordeaux', 927445)
	city1=paris
	city2=paris2
	print(f'{city1} et {city2} sont similaires ?', city1 == city2 )
	
	#*********Classe Route Test*******
	Route1 = Route('Paris', 'Arras', 22200)
	print('Un circuit?',  Route1.circuit() ) #est ce que c'est un circuit 
+0 -0

Je me suis permis d’ajouter les balises de code à ton code pour qu’il soit mieux lisible sur le forum.

Clairement, c’est pas mal ce que tu as fait. Je ne comprends pas trop pourquoi on t’apprend @property dès maintenant. Mais si tu l’utilises c’est certainement ce qu’on t’a appris.

J’aurais comme conseil de mieux nommer tes champs (v1 => ville1). C’est pour toi que je dis ça, je t’assure.

Pour ce bout de code :

#*********Classe Route Test*******
Route1 = Route('Paris', 'Arras', 22200)
print('Un circuit?',  Route1.circuit() ) #est ce que c'est un circuit 

Je pense que ce qu’on attend de toi c’est de réutiliser ta définition de ville précédente. Donc plutôt que 'Paris' (la chaîne de caractères) les paramètres d’une Route devraient être des objets Ville. Comme ça :

    #*********Classe Route Test*******
    Route1 = Route(paris, bordeaux, 22200)
    print('Un circuit?',  Route1.circuit()) #est ce que c'est un circuit 
    print('Contient Paris ?', paris in Route1)
    print('Contient Paris ?', arras in Route1)

Ton code fonctionne. Bravo 👍 Tu peux appeller la méthode __contains__ avec l’opérateur in comme je l’ai fais.


Tu peux alléger de nombreuses méthodes de ton code. Juste lorsque tu as une structure if CMP: return True else: return False tu peux directement écrire return CMP.

Par exemple ta définition __eq__ dans ville

	def __eq__(self, v):
		if self._nom == v._nom and self._population == v._population : 
			return True
		else :
			return False

Devrait s’écrire :

	def __eq__(self, v):
		return self._nom == v._nom and self._population == v._population 

Au final, ton code est pas mal et mérite une bonne note.

+3 -0

J’aurais comme conseil de mieux nommer tes champs (v1 => ville1). C’est pour toi que je dis ça, je t’assure.

Source:ache

en plus c’est demandé dans l’énoncé:

Définir la classe Route qui contient :
2. la propriété ville1 : la première ville au bout de la route (l’ordre des villes est arbitraire).
3. la propriété ville2 : la deuxième ville.

Camie
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte