for循环不接受fed值

2024-09-27 00:17:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个程序,在一个封闭的系统里模拟鱼。 我希望能够为每条鱼创建多个实例,这样每条鱼都可以像pokemon一样单独跟踪

我为我的init值创建了以下部分:

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=[]

以及

我的更新部分 而罗非鱼重量<;0.5和废物>;=0个:

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

我不明白的是,我怎么能运行,例如罗非鱼1和罗非鱼2,他们可能有不同的起始重量这个。 我也试着用

TilapiaLog.append(set((PrintTilapiaList)))

在第二个块的末尾记录所有的值作为它的迭代,但它只是使一个越来越长的同一组重复x次的列表

我随后根据以下建议进行了更新:

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

然后创建许多fish实例:

tilapia1 = 'Tilapia',1,0.005,1,1,0.15,0
tilapia2 = 'Tilapia',2,0.01,1,1,0.15,0

你把它们归为一组

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)

这将返回:

    Fish.update(tilapia1)
    TypeError: update() missing 7 required positional arguments: 'type', 'number', 'weight', 'status', 'feed', 'fcr', and 'wastestatus'

如果我给它这些值怎么可能呢


Tags: selfnumbertimefeedtypestatusupdateweight
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:14

您创建了一个类Tilapia来保存鱼的特性和行为

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

然后创建许多fish实例:

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

你把它们归为一组

tilapias = [tilapia1, tilapia2, ...]

然后你让他们活着,进化,随你怎么想

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

你可能需要找到一个很好的OOP教程

相关问题 更多 >

    热门问题