这是一道 Python 面向对象编程的实例,包含面向对象编程、Class 类相关知识,请读者先自行掌握。本文分析已有代码,主要理解其中逻辑,学习编程方法。代码乍看之下稍微复杂,拆解之后,弄通逻辑,还是很清晰明了的。
前部分为代码分析,可以重点看后面的程序运行部分哈,配合图文,便于理解。
这是笔者第一次写实例分析,内容详细,篇幅较长,仅用于学习与交流。若有疏漏,请多包涵,欢迎各位指点和讨论啊~
【需求分析】
假设银行有 1 台 ATM 机,共 n 位客户来银行操作 ATM 机器,求客户平均的排队等候时间。
【逻辑梳理】
ATM 机操作时间由客人选择的办理业务决定,符合随机分布。
客户流到达银行时间不定,符合随机分布。
累加每位客户排队等候的时间,再除以总客户数,即可得出客户的平均等候时间。
【前提假设】
实际应用中,ATM 机和客户流时间均为随机数,在本实例需做出一定条件限制以方便计算。
ATM 机操作时间:1-5 分钟
下位客户到达时间:1-10 分钟
时间以整数为单位。
【代码总览】
class ATM():
def __init__(self, maxtime = 5):
self.t_max = maxtime
def getServCompleteTime(self, start = 0):
return start + random.randint(1, self.t_max)
class Customers():
def __init__(self, n):
self.count = n
self.left = n
def getNextArrvTime(self, start = 0, arrvtime = 10):
if self.left != 0:
self.left -= 1
return start + random.randint(