2016-09-26 84 views
0

我正在學習如何使用類量排序的銀行客戶的功能,到目前爲止,我已經實現了以下內容:創建一個由貨幣

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) 

我想創建一個排序的功能顧客所花費的金額,但不確定如何去做。

+0

你在哪裏希望有這個功能嗎?它不能在課堂上。它將在這堂課之外。這個函數將作爲一個客戶數組的輸入。算法將運行在客戶的財產上。創建代碼的確切問題是什麼?你是否希望使用預建的分類方法? – prabodhprakash

+0

你會排序* iterable /容器*,但你似乎還沒有一個 –

+0

@prabodhprakash這正是我不確定的。 – ThatOnePythonNoob

回答

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
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 

簡單的插入排序,接收客戶數組並根據金錢排序。

此代碼將超出您的客戶類,將客戶數組作爲輸入。

這個問題可以有很多正確的答案。書面插入排序來正確解釋。

+0

他還沒有客戶列表。此外,不需要自己實現排序功能,因爲python中的迭代器已經有很多可用的方法。 – Igle

+0

@Igle - 我在回答中特別提到,它是爲了解釋的目的,我寫了插入排序。如果您在問題中閱讀了我的評論,我已經提到過使用預先構建的方法。 – prabodhprakash

+0

@timgeb雖然你的眼睛可能會受到傷害,但問題並不在乎。這個人提出的問題對它來說是相當新穎的,這樣寫它的目的就是爲了確保它儘可能精細! – prabodhprakash