我有一辆汽车及其行驶里程(以米为单位)的列表(我从游戏API中获取数据,但这里将使用一个函数示例。)因此,每辆汽车在 started = false 并具有一个功能,如果它们开始并行驶超过1米,它将返回。
metersdriven = 0
started = False
def getCarState(id):
if id == 1:
return 290
if id == 2:
return 0
if id == 3:
return 1200
def init(driver):
global metersdriven, started
metersdriven = getCarState(driver)
if not started:
if metersdriven > 1:
started = True
return metersdriven
else:
return 'Not started'
else:
return 'Not started'
那是代码,这就是我的意思:
fd = init(1)
sd = init(2)
td = init(3)
>>> print(fd)
290
>>> print(sd)
'Not started'
正如您在上面看到的,我们还没有遇到问题,但是现在出现了问题
>>> print(td)
'Not started'
我们实际上想检查第三辆车,但它返回了“未启动” ,这不是事实,它实际上已经行驶了1200米。
我可以理解,这是由我们最初打电话检查第一辆车并因此使开始为True 引起的。如果我们首先叫第三辆车,它将返回1200米,反之亦然。
那么我该如何解决呢?如何使每辆汽车都具有自己的布尔值?我需要使用课堂吗?
答案 0 :(得分:1)
是的,您可以为此使用类,因为它将使您轻松管理实例。如下所示就足够了:
class Car:
def __init__(self, mileage):
self.mileage = mileage
self.started = False
def start(self):
self.started = True if self.mileage > 0 else False
def stop(self):
self.started = False
现在创建一个这样的实例:
>>> sd = Car(1200) # 1200 is the mileage
>>> fd = Car(0) # this one has 0 mileage
>>> sd.started
False
>>> sd.start()
>>> sd.started
True
>>> fd.start()
>>> fd.started
False # because mileage is 0
答案 1 :(得分:0)
只需一起删除started
变量,并仅使用驱动的仪表来检查汽车是否已行驶。