You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Shoe对象列表shoes按itemsellingprice属性冒泡排序

问题核心原因

你当前的代码直接对Shoe类实例做大小比较,Python没有默认的自定义类比较规则,所以需要将比较对象替换为__itemsellingprice属性的取值结果,你可以按如下步骤修改:


修改方案

  1. 调整冒泡排序的比较逻辑
    原来的比较行if shoes[j] > shoes[j + 1]:改为调用取值方法获取售价后再比较:
if shoes[j].get_itemsellingprice() > shoes[j + 1].get_itemsellingprice():
  1. 修正打印逻辑
    原来的打印行print("% d" % shoes[i])尝试把Shoe对象格式化为整数会报错,因为你已经实现了__str__方法,可以直接打印对象,也可以选择单独打印售价:
# 直接打印对象完整信息
print(shoes[i])
# 如果只需要打印售价
# print(shoes[i].get_itemsellingprice())
  1. 可选:补充返回值避免打印None
    原bubblesort函数没有显式返回值,直接调用print(bubblesort(shoes))会输出None,如果需要返回排序后的列表可以在函数末尾加return shoes,不需要的话删掉最后那行print(bubblesort(shoes))即可。

修改后完整的bubblesort代码

def bubblesort(shoes):
    n = len(shoes)
    for i in range(n - 1 , 0 ,-1):
        for j in range(i):
            # 改为比较售价属性
            if shoes[j].get_itemsellingprice() > shoes[j + 1].get_itemsellingprice():
                tmp = shoes[j]
                shoes[j] = shoes[j + 1]
                shoes[j + 1] = tmp

    for i in range(len(shoes)):
        # 直接打印Shoe对象,触发__str__方法输出完整信息
        print(shoes[i])
    # 可选:返回排序后的列表
    return shoes

# 调用排序
bubblesort(shoes)

内容的提问来源于stack exchange,提问作者Newbie stint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 23:24:02