我有一个程序可以以列表的形式模拟公交车,并且可以将乘客添加到公交车上。我希望能够设置最大乘客人数,以便如果列表超过 25 名乘客,我会显示一个代码,表明巴士已满。
是否可以使用 Python 在列表中设置此限制。
下面是代码片段:
#defining a class for the passenger list
class Bus:
passengers = []
number_of_passengers = 0
您可以将 super
关键字用于覆盖列表。
class PassengerList(list):
limit = 0
def __init__(self,lim):
self.limit = lim
def append(self,item):
if len(self) >= self.limit:
raise Exception('Limit exceeded.')
super(PassengerList,self).append(item)
passengers = PassengerList(25)
passengers.append('abc')
您可以通过参数设置限制。
,您可能想要检查列表的长度,然后决定是添加乘客还是显示消息。像这样:
class Bus:
def __init__(self,max_number_of_passengers = 25):
self.passengers = []
self.max_number_of_passengers = max_number_of_passengers
def add_passenger(self,passenger):
if len(self.passengers) > self.max_number_of_passengers:
# display message
else:
self.passengers.append(passenger)
,
class Bus:
def __init__(self,limit=25):
self.passengers = []
self.bus_limit = limit
self.is_bus_full = False
def add_passenger(self):
if len(self.passengers) < self.bus_limit:
self.passengers.append(1) # add dummy values
else:
self.is_bus_full = True
def passenger_left(self):
self.passengers.pop()
def bus_status(self):
if self.is_bus_full:
return 'This bus is full'
else:
return 'This bus has vacant seats'
你可以这样写。
,你可以使用一个类
class Bus:
def __init__(self):
self.passengers = []
self.MAX_LIMIT = 25
def add_passenger(self,passenger):
if(len(self.passengers) <= self.MAX_LIMIT):
self.passengers.append(passenger)
else:
print('sorry bus is full')
def show_passengers(self):
print(self.passengers)
bus = Bus()
for i in range(26):
bus.add_passenger(i)
bus.add_passenger(26) #sorry bus is full