Ecrire des méthodes de la fonction getPointsWithPositiveX()
elle est définie par la spécification :
def getPointsWithPositiveX(pointList): Rend une liste ne comportant que les points de pointList pour
lesquels x est supérieur ou égal a 0
pointList -- liste d'instances de la classe Point
Bonjour pour la question ci-dessus j'ai eu des problème j'essai d'écrire la fonction getPointsWithPositiveX() aidez moi :
voici mon code:
class Point :
"""
Akn etudiant en RT
"""
def __init__(self,x,y):
#try:
self.x=x
self.y=y
#except AssertionError:
assert(isinstance(x,int)) and (isinstance(y,int))
# print("n'est p)as un entier")
# else:
# print("ok")
def __str__(self):
return self.x + " " + self.y
def __eq__(self,other):
return (self.x,self.y)==(self.other,self.other)
def __repr__(self):
return "Point(%r,%r)"%(self.x,self.y)
def getPointsWithPositiveX(pointList):
pointList=[]
p=Point(x,y)
for p in pointList:
if pointListe[p.x]>=0:
pointList=[p]
return pointList
y a problème aux lignes 28, 32, 33, 34 et accessoirement la 29 ... soit quasiment toute la fonction.
écris ce que tu veux faire en français et ensuite on traduira en python.
je veux faire une fonction qui prend une liste d'instances de la classe Point (si l'attribut x est positive) et qui retourne une liste
j'avais compris ...
je traduis ta fonction:
def getPointsWithPositiveX(pointList): # la fonction reçoit une variable pointList
pointList=[] # la variable pointList est une liste vide
p=Point(x,y) # la variable p est un point de coordonnées x,y sorties d'on ne sait où
for p in pointList: # p prend tour à tour une valeur dans pointList qui rappelons-le est une liste vide
if pointListe[p.x]>=0: # si la valeur à l'indice p.x est positive
pointList=[p] # alors pointList est une liste contenant une unique valeur p
return pointList # et on retourne cette liste
Ta fonction getPointsWithPositiveX(pointList) comporte beaucoup d'erreur de logique. Par exemple:
- tu passes l'argument pointList, qui devrait avoir du contenu, et tu l'initialises tout de suite à '[]': la boucle "for" ne tournera même pas une fois.
- p=Point(x,y) est inutile puisque p devrait recevoir une nouvelle valeur à chaque boucle for
- pointListe[p.x] est une erreur parce que p.x n'est pas un indice correct de la liste. La valeur à prendre est seulement p.x
- avec pointList=[p], ta liste est maintenant composée d'une seule valeur. De plus, tu ne peux pas modifier une liste dont tu te sers pour faire la boucle!
- avec "return pointList" tu renvoies la liste à la fin de la 1ère boucle for: c'est une mauvaise indentation, et il faut attendre que la boucle for soit terminée. De plus, comme ici la boucle for ne tournera pas, la fonction renverra None.
- enfin, quand tu analyses les éléments de la liste pointList, tu as besoin d'une 2e liste (par exemple pointList2 initialisée à []) pour accumuler tous les points "p" ayant un p.x>=0 (avec pointList2.append(p)) et c'est cette liste que la fonction retournera (avec return pointList2).
Bref, c'est pas terrible...
Essaie en tenant compte de ces remarques!
Tu as manifestement besoin d'avoir une bonne documentation sous la main!
merci beaucoup c'est résolu je n'avais pas accès à internet pour vous le dire
Liste d'instances
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.