Laurentvidal.fr simplifie la recherche de solutions à toutes vos questions grâce à une communauté active et experte. Trouvez des solutions rapides et fiables à vos interrogations grâce à une communauté d'experts dévoués. Découvrez une mine de connaissances de professionnels dans différentes disciplines sur notre plateforme conviviale de questions-réponses.

Bonjour, quelqu'un peut m'aider pour créer ce programme en python SVP

Un problème avec des villes

a. Objet Ville
Créer une classe Ville pourvue des arguments num, nom, x, et y qui représentent respectivement leur numéro, nom et coordonnées x, y d'une ville.
Écrivez la méthode spéciale __repr__ pour que print affiche le nom des villes.


b. Extraction des villes
On considère le fichier "villes.txt". Il contient un ensemble de villes lorraines. (Les données ne correspondent pas forcément à la réalité)
Chaque ville est associée à un numéro et des coordonnées par rapport à Nancy qui est en (0,0).
Les coordonnées sont en km. Les données sont séparées par une tabulation.

Écrire une fonction qui prend en argument une ligne du fichier "villes.txt" et renvoie l'objet Ville correspondant.
Créer une liste qui contient les villes (en objets).


c. Méthode distance
Ajouter une méthode distance, qui prend en argument deux objets Ville et renvoie leur distance.


d. Longueur du réseau routier
La matrice suivante (appelée matrice d'adjacence) est faite de 1 aux indices (i,j) si les villes i et j sont reliées par une route directe et de 0 sinon. (Vous pouvez la copier dans votre programme)
Cette matrice est symétrique ( MatAdj[i][j] = MatAdj[j][i] ) car les routes sont à double sens. (Ici non plus, les données ne correspondent pas à la réalité)

MatAdj=[[0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0],
[0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0],
[1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0],
[0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0],
[0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0],
[0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0],
[0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0],
[1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0],
[0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0,0,1],
[0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1],
[0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1],
[0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0],
[1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1],
[0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0],
[0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0]]


En considérant que les routes sont droites entre 2 villes,
Créer un programme qui prend en entrée une matrice et une liste de villes associées et qui calcule la longueur totale du réseau routier correspondant.


e. Villes les plus éloignées
Écrire un programme qui renvoie quels sont les deux villes les plus éloignées (à vol d'oiseau).


f. Antenne relais à Metz
On considère que Metz dispose d'une antenne relais. On souhaite connaître quelles villes seront les mieux desservies par l'antenne, en assumant que la réception est décroissante avec la distance.
Écrire un programme qui trie les villes de manière croissante par rapport à leur distance à l'antenne.
(Évitez autant que possible d'utiliser la méthode sort et la fonction sorted)


g. Villes non desservies par l'antenne
Écrire un programme qui prend en entrée une liste de villes triée et une distance d, et trouve l'indice de la première ville à une distance supérieure de Metz à d.
Au delà de 100km, on considère que l'antenne est inefficace.


h. Synthèse
Utiliser vos programmes pour afficher vos résultats:
La longueur totale du réseau routier, les deux villes les plus éloignées et leur distance, les villes triées par rapport à leur distance à Metz, et les villes non desservies par l'antenne.


Créer et choisissez vos programmes de sorte à ce qu'ils soient efficaces (comme s'il n'y avait pas seulement 17 villes, mais beaucoup plus).
Vous pouvez, pour l'objet Ville, créer des méthodes et des attributs supplémentaires.

On considèrera que le fichier villes.txt se situe dans le dossier du programme donc vous utiliserez la commande open("villes.txt") (pas d'autre chemin).


Bonjour Quelquun Peut Maider Pour Créer Ce Programme En Python SVP Un Problème Avec Des Villes A Objet Ville Créer Une Classe Ville Pourvue Des Arguments Num No class=

Sagot :

Bonjour, je n'ai pas l'intention de te donner d'un seul coup la réponse à tout l'exercice. Disons que l'on va  faire durer le plaisir. ^-^

Mais déjà, j'ai une remarque : bien que parfois les méthodes __repr__ et __str__ renvoient la même valeur, ces méthodes ne sont pas les mêmes et c'est la méthode __str__ qui renvoie ce que la fonction print affiche. Quant à elle, la fonction __repr__ peut renvoyer des valeurs affichées par la console.

Pour créer cette classe, on commence par écrire "class Ville:".

Sur la seconde ligne, on définit sa méthode __init__ qui prend les arguments self, num, nom, x et y.

On enregistre les valeurs fournies comme arguments.

Ensuite, puisque c'est la fonction __str__ qui renvoie la valeur affichée par print mais qu'il est ici question de la méthode __repr__, on va considérer que l'on va attribuer la même valeur à ces deux méthodes.

Or, étant donné que print doit renvoyer le nom de la ville et que cette valeur a été donné en argument à la fonction __init__ et que l'on a enregistré sa valeur, on peut utiliser une simple fonction lambda pour définir les deux fonction __str__ et __repr__.

Voici un résultat (normalement très condensé) pour la question a) :

class Ville:

   def __init__(self, num, nom, x, y):self.num, self.nom, self.x, self.y = num, nom, x, y

   __str__ = __repr__ = lambda self:self.nom

print(Ville(92, "Paris", 0, 0))

Pour la question b) :

Je ne te la fais pas entièrement, mais je te donne des indications :

En python, on utilise "\t" pour représenter une tabulation.

Ainsi, par exemple, print("\t") affichera une tabulation.

Pour lire le contenu d'un fichier, utilise la fonction open.

Exemple : open("Fichier.txt", "r").read() pour récupérer le contenu d'un fichier nommé "Fichier.txt" sous forme de chaîne de type str.

Je te laisse voir avec cela. Pour la suite, si tu as besoin d'aide, n'hésite pas.

Nous apprécions votre visite. Nous espérons que les réponses trouvées vous ont été bénéfiques. N'hésitez pas à revenir pour plus d'informations. Merci de votre visite. Nous nous engageons à fournir les meilleures informations disponibles. Revenez quand vous voulez pour plus. Visitez toujours Laurentvidal.fr pour obtenir de nouvelles et fiables réponses de nos experts.