使用python写一个设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序
时间: 2024-02-06 15:12:14 浏览: 74
好的,以下是一个Python程序,用于解决您提供的问题:
```python
from queue import Queue
class Customer:
def __init__(self, name, business):
self.name = name
self.business = business
self.wait_time = 0
class Bank:
def __init__(self):
self.a_queue = Queue()
self.b_queue = Queue()
self.a_speed = 2
self.b_speed = 1
def add_customer(self, customer):
if customer.business == 'A':
self.a_queue.put(customer)
else:
self.b_queue.put(customer)
def process_customers(self):
processed_customers = []
while not self.a_queue.empty() or not self.b_queue.empty():
if not self.a_queue.empty():
for i in range(self.a_speed):
if not self.a_queue.empty():
customer = self.a_queue.get()
customer.wait_time += self.a_speed
processed_customers.append(customer)
if not self.b_queue.empty():
customer = self.b_queue.get()
customer.wait_time += self.b_speed
processed_customers.append(customer)
return processed_customers
bank = Bank()
customers = [Customer('Alice', 'A'), Customer('Bob', 'B'), Customer('Charlie', 'A'), Customer('Dave', 'B')]
for customer in customers:
bank.add_customer(customer)
processed_customers = bank.process_customers()
for customer in processed_customers:
print(customer.name, customer.wait_time)
```
这个程序创建了一个银行类和一个顾客类。银行类有两个队列,分别用于A业务和B业务的顾客。银行类还有两个速度变量,分别表示A业务窗口的速度是B业务窗口的两倍。顾客类有一个名称和一个业务类型变量,以及一个等待时间变量。
程序首先创建了一个银行对象和一些顾客对象,并将每个顾客添加到银行队列中。然后,程序调用银行的process_customers方法来处理顾客。在这个方法中,程序循环处理队列中的顾客,直到两个队列都为空为止。对于A业务队列中的每个顾客,程序会处理两次,然后将其添加到已处理的顾客列表中,以便按顺序输出。对于B业务队列中的每个顾客,程序只处理一次,然后将其添加到已处理的顾客列表中。最后,程序输出每个顾客的名称和等待时间。
希望这个程序能够解决您的问题!
阅读全文