【发布时间】:2020-09-30 18:22:59
【问题描述】:
我有一个错误消息:TypeError: unsupported operand type(s) for -=: 'Workers' and 'int'。我知道消息说Workers 不是int,但我不知道如何解决。
我的代码应该做什么:创建 5 个以生命力 100 开头的工人,并且我的工人姓名是当前生命力。假设他们一次去工厂生产一个单位的产品,如果他们成功了,他们会失去 10 个单位的生命力并返回到队列的后面,不得不在那里轮流等待。但是如果发生事故,他们会失去 100 单位的生命力,然后死亡并从模拟中移除。只要有工人活着,模拟就应该运行,最后打印出生产了多少单位的产品。
如果我删除class Workers: 并将class Roads: 中的第一个def 更改为:
class Roads:
def __init__(self):
self._workers_road = []
for worker in range(5):
self._workers_road.append(100)
然后它工作得很好,但从长远来看,我需要class Workers: 来扩展我的代码并培育更多工人并将它们附加到class Roads: 的列表中。
import random
class Workers:
def __init__(self):
self._worker = 100
def get_worker(self):
return self._worker
class Products:
def __init__(self):
self._product = True
def get_product(self):
return self._product
class Roads:
def __init__(self):
self._workers_road = []
for worker in range(5):
self._workers_road.append(Workers())
def workers_left(self):
if len(self._workers_road) == 0:
return True
class Storage:
def __init__(self):
self._product_stock = []
def add_product(self):
self._product_stock.append(Products())
def get_product_stock(self):
return 'Storage: ' + str(len(self._product_stock))
class Plants:
def __init__(self):
self._plant_list = []
self._plant_storage = Storage()
self._road = Roads()
def add_worker(self):
self._plant_list.append(self._road._workers_road[0])
self._road._workers_road.pop(0)
def create_product(self):
accident = random.randint(1,10)
if accident < 5:
self._plant_storage.add_product()
self._plant_list[0] -= 10
else:
self._plant_list[0] -= 100
def sub_worker(self):
if self._plant_list[0] <= 0:
self._plant_list.pop(0)
else:
self._road._workers_road.append(self._plant_list[0])
self._plant_list.pop(0)
if __name__ == "__main__":
a = Plants()
while not a._road.workers_left():
a.add_worker()
a.create_product()
a.sub_worker()
print(a._plant_storage.get_product_stock())
这似乎是一件很容易解决的事情,但我被卡住了......
【问题讨论】:
标签: python