创建一个按金额对银行客户进行分类的功能

时间:2016-09-26 09:32:21

标签: python python-2.7 function class initialization

我正在学习如何使用Classes,到目前为止我已经实现了以下目标:

class customer:
    def __init__ (self, name, ID, money):
        self.name = name
        self.ID = ID
        self.money = money
    def deposit(self, amount):
        self.money = self.money+amount
    def withdraw(self, amount):
        self.money = self.money-amount

mike = customer('Mike', 1343, 1884883)
john = customer('John', 1343, 884839)
steve = customer('Steve', 1343, 99493)
adam = customer('Adam', 1343, 10000)

我想创建一个按客户所用金额对客户进行分类的功能,但我不确定如何这样做。

2 个答案:

答案 0 :(得分:3)

您可以按照以下属性对对象列表进行排序:

your_list.sort(key=lambda x: x.attribute_name, reverse=True)

如果您设置reverse=False,则列表会按升序排序,reverse=True会从最高位到最低位排序。

所以在你的情况下:

class customer:
    def __init__ (self, name, ID, money):
        self.name = name
        self.ID = ID
        self.money = money
    def deposit(self, amount):
        self.money = self.money+amount
    def withdraw(self, amount):
        self.money = self.money-amount


mike = customer('Mike', 1343, 1884883)
john = customer('John', 1343, 884839)
steve = customer('Steve', 1343, 99493)
adam = customer('Adam', 1343, 10000)

unsorted_list = [steve, adam, mike, john]

print [c.name for c in unsorted_list]

unsorted_list.sort(key=lambda c: c.money, reverse=True)

print [c.name for c in unsorted_list]

For more information check this question too

答案 1 :(得分:-1)

def sort_by_money(customer)
    for index in range(1,len(customer)):
        currentvalue = customer[index].money
        position = index

        while position>0 and customer[position-1].money > currentvalue:
            alist[position]=alist[position-1]
            position = position-1

        customer[position]=customer

简单的插入排序,它接收客户数组并根据资金对其进行排序。

此代码将位于客户类之外,将客户数组作为输入。

这个问题可以有很多正确答案。书面插入排序正确解释。