具有两个值的 Python 列表

我有一个程序可以以列表的形式模拟公交车,并且可以将乘客添加到公交车上。我希望能够设置最大乘客人数,以便如果列表超过 25 名乘客,我会显示一个代码,表明巴士已满。

是否可以使用 Python 在列表中设置此限制。

下面是代码片段:


#defining a class for the passenger list
class Bus:
  passengers = []
  number_of_passengers = 0
wangjiaxing85 回答:具有两个值的 Python 列表

您可以将 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
本文链接:https://www.f2er.com/43236.html

大家都在问