【问题标题】:How do i make the bubblesort sort the list shoes by using itemsellingprice我如何使用 item sellprice 对列表鞋进行冒泡排序
【发布时间】:2021-06-04 08:39:56
【问题描述】:
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 冒泡排序(鞋子): 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))

当我将对象添加到鞋子列表中时,我想要冒泡排序,以使用鞋子中的 itemsalesprice 属性对列表进行排序。我猜这与将鞋子[j] 替换为物品销售价格的价值有关。

【问题讨论】:

    标签: python list sorting


    【解决方案1】:

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

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

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

    您可以修改该条件以获得更明确的条件来比较售价。

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

    方案二:修改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__

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2014-03-13
      • 2017-09-27
      • 2022-06-25
      • 1970-01-01
      • 2014-08-29
      • 2019-07-21
      相关资源
      最近更新 更多