我有車的名單以及他們在米里程(我得到的數(shù)據(jù)的從游戲API,但我會用一個函數(shù)例子,而不是在這里。)因此,每一輛汽車有一個開始=假的開頭和有一個函數(shù),將返回如果他們開始并行駛超過 1 米。metersdriven = 0started = Falsedef getCarState(id): if id == 1: return 290 if id == 2: return 0 if id == 3: return 1200def 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'正如您在上面看到的,我們還沒有遇到問題,但是現(xiàn)在出現(xiàn)了問題>>> print(td)'Not started'我們實際上想檢查第三輛車,但它返回“未啟動”,這不是真的,它實際上已經(jīng)行駛了 1200 米。我可以理解這是由于我們最初打電話檢查第一輛車并因此將開始設(shè)置為 True 引起的。如果我們一開始叫第三輛車,它會返回1200米,反之亦然。那么我該如何解決這個問題呢?如何讓每輛車都有自己的布爾值?我需要使用類嗎?
2 回答

POPMUISE
TA貢獻1765條經(jīng)驗 獲得超5個贊
是的,您可以為此使用類,因為它可以讓您輕松管理實例。類似以下內(nèi)容就足夠了:
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
現(xiàn)在創(chuàng)建一個像這樣的實例:
>>> 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
添加回答
舉報
0/150
提交
取消