2025年7月21日 星期一

Python Unit 3 Lesson 3 - For loops - Challenge: Waiting times

 Challenge

import random


num_cashiers = 1

num_cooks = 2


waiting_to_order = 0

waiting_for_food = 0

num_customers_served = 0


for minutes in range(300):

    # Customers arrive every minute and line up to order.

    waiting_to_order = waiting_to_order + random.randint(0, 6)

    

    # Each cashier can take up to three orders per minute.

    new_orders = min(num_cashiers * 3, waiting_to_order)

    

    # After ordering, customers wait for their food to be made.

    waiting_to_order = waiting_to_order - new_orders

    waiting_for_food = waiting_for_food + new_orders


    # Each cook can make up to 1 food per minute.

    new_food = min(num_cooks*1, waiting_for_food)

    num_customers_served = num_customers_served + new_food


    # After providing food, 

    # the customer moves out of the waiting_for_food state.

    waiting_for_food = waiting_for_food - new_food

    

    print(str(waiting_to_order) + " customers waiting to order.")

    print(str(waiting_for_food) + " customers waiting for food.")

print("The total number of customers served is " + \

      str(num_customers_served) + "!")

Bonus

import random

num_cashiers = 2
num_cooks = 5

waiting_to_order = 0
waiting_for_food = 0
num_customers_served = 0

# from 12-2pm the customer arrival rate ever minute = (3, 6)
for minutes in range(120):
    # Customers arrive every minute and line up to order.
    waiting_to_order = waiting_to_order + random.randint(3, 6)
    
    # Each cashier can take up to three orders per minute.
    new_orders = min(num_cashiers * 3, waiting_to_order)
    
    # After ordering, customers wait for their food to be made.
    waiting_to_order = waiting_to_order - new_orders
    waiting_for_food = waiting_for_food + new_orders

    # Each cook can make up to 1 food per minute.
    new_food = min(num_cooks*1, waiting_for_food)
    num_customers_served = num_customers_served + new_food

    # After providing food, 
    # the customer moves out of the waiting_for_food state.
    waiting_for_food = waiting_for_food - new_food
    
    print(str(waiting_to_order) + " customers waiting to order.")
    print(str(waiting_for_food) + " customers waiting for food.")

# Rearrange the staff
num_cashiers = 1
num_cooks = 2
waiting_to_order = 0
waiting_for_food = 0
print("The total number of customers served is " + \
      str(num_customers_served) + "!")
print("----------------------------")
print("----------------------------")
print("----------------------------")
# from 2-5pm the customer arrival rate ever minute = (0, 3)
for minutes in range(180):
    # Customers arrive every minute and line up to order.
    waiting_to_order = waiting_to_order + random.randint(0, 3)
    
    # Each cashier can take up to three orders per minute.
    new_orders = min(num_cashiers * 3, waiting_to_order)
    
    # After ordering, customers wait for their food to be made.
    waiting_to_order = waiting_to_order - new_orders
    waiting_for_food = waiting_for_food + new_orders

    # Each cook can make up to 1 food per minute.
    new_food = min(num_cooks*1, waiting_for_food)
    num_customers_served = num_customers_served + new_food

    # After providing food, 
    # the customer moves out of the waiting_for_food state.
    waiting_for_food = waiting_for_food - new_food
    
    print(str(waiting_to_order) + " customers waiting to order.")
    print(str(waiting_for_food) + " customers waiting for food.")

print("The total number of customers served is " + \
      str(num_customers_served) + "!")

沒有留言:

張貼留言