2016-09-26 6 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/container *をソートしますが、あなたはまだ持っていないようです –

+0

@prabodhprakashそれは私が確信しているものです。 – ThatOnePythonNoob

答えて

3

あなたは、このような属性によって所定の位置にオブジェクトのリストを並べ替えることができます:あなたはreverse=Falseを設定した場合

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

、リストは、それが最高額から最低までソートされ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のiterableには既に多くのメソッドが用意されているので、自分でソート関数を実装する必要はありません。 – Igle

+0

@Igle - 私は具体的に私の答えで、挿入のソートを書いたのは説明のためであると述べました。この質問で私のコメントを読んだら、あらかじめ作成されたメソッドの使用について述べました。 – prabodhprakash

+0

@timgebあなたの目が傷ついているかもしれないが、質問はそれを気にしない。その人に質問をするのはかなり新しく、これをこのように書くという全目的は、それが可能な限り精巧であることを保証することでした! – prabodhprakash

関連する問題