我该如何制作泡泡鞋?或者使用itemsellingprice对列表中的鞋子进行排序


class Shoe:
def __init__(self,itemname,itemindex,description,itemsellingprice,itemstocklevel,itemtype):
self.__itemname = itemname
self.__itemindex = itemindex
self.__description = description
self.__itemsellingprice = itemsellingprice
self.__itemstocklevel = itemstocklevel
self.__itemtype = itemtype
def get_itemname(self):
return self.__itemname
def get_itemindex(self):
return self.__itemindex
def get_description(self):
return self.__description
def get_itemsellingprice(self):
return self.__itemsellingprice
def get_itemstocklevel(self):
return self.__itemstocklevel
def get_itemtype(self):
return self.__itemtype
def set_itemname(self,itemname):
self.__itemname = itemname
def set_itemindex(self,itemindex):
self.__itemindex = itemindex
def set_description(self,description):
self.__description = description
def set_itemsellingprice(self,itemsellingprice):
self.__itemsellingprice = itemsellingprice
def set_itemstocklevel(self,itemstocklevel):
self.__itemstocklevel = itemstocklevel
def set_itemtype(self,itemtype):
self.__itemtype = itemtype

def __str__(self):
return "{} (Item Index = {} ) Item Description: {},it is also a {} type shoe worth {}. There is currently {} in stock".format(self.__itemname,self.__itemindex,self.__description,self.__itemtype,self.__itemsellingprice,self.__itemstocklevel)

def add():
itemindex = 0
itemname = input("Enter shoe's name: ")
description = input("Please enter shoe's description: ")
itemsellingprice = int(input("Please enter shoe's selling price: "))
itemstocklevel = int(input("Please enter shoe's stock level: "))
itemtype = input("Please enter shoe type: ")
shoeitem = Shoe.Shoe(itemname,itemindex,description, itemsellingprice, itemstocklevel, itemtype)
shoes.append(shoeitem)
print("Shoe Successfully Added")
itemindex += 1

这是添加功能

def bubblesort(鞋(:n=len(鞋(

for i in range(n - 1 , 0 ,-1):
for j in range(i):
if shoes[j] > shoes[j + 1]:
tmp = shoes[j]
shoes[j] = shoes[j + 1]
shoes[j + 1] = tmp
for i in range(len(shoes)):
print("% d" % shoes[i])
print(bubblesort(shoes))

当我将对象添加到列表鞋子中时,我希望使用鞋子中的itemsellingprice属性来排序列表。我猜这与把鞋子[j]换成商品售价的价值有关。

解决方案1:编辑气泡排序代码

在你的气泡排序代码中,你有一行:

if shoes[j] > shoes[j + 1]:

您可以将该条件修改为比较售价的更明确的条件。

if shoes[j].get_itemsellingprice() > shoes[j + 1].get_itemsellingprice():

解决方案2:修改Shoe

由于Shoe是一个类,您可以自己实现比较运算符,以取代<<=的默认行为。

class Shoe:
# ...

def __le__(self, other):
return self.get_itemsellingprice() <= other.get_itemsellingprice()
def __lt__(self, other):
return self.get_itemsellingprice() < other.get_itemsellingprice()

.__le__.__lt__这两个成员函数起着特殊的作用;Python将认识到您正在为Shoe类实现一个特殊的比较;当比较冒泡排序代码中的两个Shoe对象时,Python将使用成员函数.__le__.__lt__

最新更新