我不能让这个代码工作。我试过我在网上看到的东西。大多数适应症建议使用__cmp__
,但不起作用。另外,我也尝试过使用__lt__
,但都没有成功
有没有人能留意一下我的代码,告诉我如何让它正常工作
我创建了一个顶点类(Vertice),它的初始值是__lt__
、__gt__
和__cmp__
方法。另外,一个主程序,它创建一个Vertex
列表并尝试对它们进行排序(未成功)
class Vertice:
def __init__(self, coordenada_x, coordenada_y):
self.coordenada_x = coordenada_x
self.coordenada_y = coordenada_y
def __str__(self):
return "Vértice ({},{})".format(self.coordenada_x, self.coordenada_y)
def __add__(self, otro_vertice):
vertice_resultado = Vertice(self.coordenada_x + otro_vertice.coordenada_x, self.coordenada_y + otro_vertice.coordenada_y)
return vertice_resultado
def __lt__(self, otro_vertice):
if self.coordenada_x > otro_vertice.coordenada_x:
return -1
elif self.coordenada_x < otro_vertice.coordenada_x:
return +1
else:
if self.coordenada_y > otro_vertice.coordenada_y:
return -1
elif self.coordenada_y < otro_vertice.coordenada_y:
return +1
else:
return 0
def __gt__(self, otro_vertice):
if self.coordenada_x > otro_vertice.coordenada_x:
return +1
elif self.coordenada_x < otro_vertice.coordenada_x:
return -1
else:
if self.coordenada_y > otro_vertice.coordenada_y:
return +1
elif self.coordenada_y < otro_vertice.coordenada_y:
return -1
else:
return 0
def __cmp__(self, otro_vertice):
if self.coordenada_x > otro_vertice.coordenada_x:
return +1
elif self.coordenada_x < otro_vertice.coordenada_x:
return -1
else:
if self.coordenada_y > otro_vertice.coordenada_y:
return +1
elif self.coordenada_y < otro_vertice.coordenada_y:
return -1
else:
return 0
from Vertice import Vertice
import random
def main():
lista = []
for i in range(0,10):
a = random.randint(1,99)
b = random.randint(1,99)
lista.append(Vertice(a,b))
for elemento in lista:
print(elemento)
print()
lista.sort()
for elemento in lista:
print(elemento)
print()
main()
我希望输出一个顶点列表,首先按“x”坐标排序,然后按“y”坐标排序。在这一刻,名单被重新排序混乱
首先,如Odds and Ends有关排序的文档所述:
在^{} 文档中也提到了:
所以您只需要实现一个} is not anymore valid for Python3
__lt__
方法。你不需要
__gt__
和^{接下来,
__lt__
方法必须返回True
或False
在那之后,
main
中的代码现在应该可以工作了:结果:
结果(当某些顶点具有相同的
x
):相关问题 更多 >
编程相关推荐