2017-09-13 11 views
0

私は閉じたシステムで魚をシミュレートするプログラムに取り組んでいます。 私は各魚の複数のインスタンスを作成して、それぞれが個々にポケモンのようなものを追跡できるようにしたいと考えています。forループはフィード値を受け付けません

私は私のinit値については、このセクション作った:

TilapiaFeedStatus = TilapiaFeedStatus + TilapiaFeedAmount 
TilapiaWeight = TilapiaWeight + (TilapiaFCR*TilapiaFeedAmount) 
Waste = Waste + WasteAmt 
TilapiaFeedStatus=TilapiaFeedStatus - TilapiaFeedAmount 
Waste = Waste - PlantUptakeSum 
PlantsUpdate = [x+0.0001 for x in PlantUptakeList] 
PlantUptakeList = PlantsUpdate 
PlantUptakeSum = sum(PlantUptakeList) 
PrintTilapia = "Weight",TilapiaWeight,"Waste",Waste,"Day:",time,"Plant uptake",PlantUptakeList 
PrintTilapiaList = [TilapiaFeedStatus, TilapiaFeedAmount, TilapiaWeight, Waste, time] 
time = time + 1 

私は何をすることができます:TilapiaWeight < 0.5および廃棄物> = 0ながら、私の更新部

TilapiaWeight = 0.05 
TilapiaFCR = 0.1 
TilapiaFeedStatus = 10 
TilapiaFeedAmount = 0.9*TilapiaWeight 
WasteAmt = (1-TilapiaFCR)*TilapiaFeedAmount 
Waste = 10 
days = ["Mon"],["Tue"],["Wed"],["Thu"],["Fri"],["Sat"],["Sun"] 
time = 0 
PlantUptakeList = [0.002,0.003] #the uptake rate of each plant 
Plants = []#Testing list appending["Green Lettuce","Red Lettuce"] 
PlantUptakeSum = 0 
PlantsPerM2 = 30 
PTX=[] 

を私がTilapia 1とTilapia 2のためにどのようにこれを動かすことができるのか理解できません。 ...繰り返さx回を私もそれを反復処理としてすべての値をログに記録する第2ブロックの終わりに

TilapiaLog.append(set((PrintTilapiaList))) 

を使用しようとしていたが、それはちょうど、同じセットの長い長いリストを作成

私は、その後に提案以下に従って更新:そして、あなたは多くの魚インスタンスを作成

class Fish: 
def __init__(self, type, number, weight, status, feed, fcr, wastestatus): 
    self.type = type 
    self.number = number 
    self.weight = weight 
    self.status = status 
    self.feed = feed 
    self.fcr = fcr 
    self.wastestatus = wastestatus 
def update(self, type, number, weight, status, feed, fcr, wastestatus): 
    status = status + feed 
    weight = weight + (fcr * feed) 
    wastestatus = wastestatus + (1-fcr) 
    PrintTilapia = type, number, weight, status, feed, fcr, wastestatus 
    print(type, number, weight, status, feed, fcr, wastestatus) 

    return type, number, weight, status, feed, fcr, wastestatus 
    #...do something to this fish 

tilapia1 = 'Tilapia',1,0.005,1,1,0.15,0 
tilapia2 = 'Tilapia',2,0.01,1,1,0.15,0 
01私は場合
Fish.update(tilapia1) 
    TypeError: update() missing 7 required positional arguments: 'type', 'number', 'weight', 'status', 'feed', 'fcr', and 'wastestatus' 

どのようにこれをすることができます:コレクションその後、

fishes = (tilapia1, tilapia2) 

print(tilapia1) #('Tilapia', 1, 0.005, 1, 1, 0.15, 0) 

あなたが生きてそれらを作る中

あなたのグループ彼らは、あなたがこれを返す

time_span = 10 
for t in range(time_span): 
    for f in fishes: 
    print(f) #('Tilapia', 1, 0.005, 1, 1, 0.15, 0) 
    Fish.update(f) 

好き、進化しますこれらの価値を与えていますか?

+1

これはクラスにとって理想的な仕事のようです。 –

答えて

1

クラスを作成するTilapiaあなたの魚の特性と動作を保持します。

class Tilapia: 
    def __init__(self, weight, status, ...): 
     self weight = weight 
     self.status = status 
    def update(self): 
     ...do something to this fish 

は次に、あなたは多くの魚のインスタンスを作成します:コレクションその後、

tilapias = [tilapia1, tilapia2, ...] 

あなたが生きてそれらを作るに

tilapia1 = Tilapia(12, 'happy') 
tilapia2 = Tilapia(5, 'hungry') 
... 

あなたのグループにそれらを、あなたが好きな、進化

for t in range(time_span): 
    for tilapia in tilapias: 
     tilapia.update() 

あなたはおそらくf OOPに関する良いチュートリアルを教えてください

+0

私の男、ありがとう、私は良いツタンカーメンが必要です。私は繰り返しの構造化に問題があり、whileループで実行していましたが、これはまさに私が必要としていたものです。 – shabba

+0

質問が更新されました – shabba

関連する問題