From 30252a773dffe72ad3c365ae56efaa80cf0422e4 Mon Sep 17 00:00:00 2001 From: GuanM <30427262+sxhoio@users.noreply.github.com> Date: Thu, 31 Oct 2024 17:41:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=98=E7=9B=AE1=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 计算机基础/题目1.py | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 计算机基础/题目1.py diff --git a/计算机基础/题目1.py b/计算机基础/题目1.py new file mode 100644 index 0000000..256a1e5 --- /dev/null +++ b/计算机基础/题目1.py @@ -0,0 +1,51 @@ +class 任务: + def __init__(self, 任务名称, 到达时间, 执行时间): + self.任务名称 = 任务名称 + self.到达时间 = 到达时间 + self.执行时间 = 执行时间 + self.完成时间 = 0 + self.周转时间 = 0 + self.已开始 = False + + +def 计算周转时间(): + 任务列表 = [] + for _ in range(4): + 任务名称, 到达时间, 执行时间 = input().split() + 任务列表.append(任务(任务名称, int(到达时间), int(执行时间))) + + 当前时间 = 0 + 完成数量 = 0 + 结果 = [] + + while 完成数量 < 4: + 可用任务 = [t for t in 任务列表 + if t.到达时间 <= 当前时间 and not t.已开始] + + if not 可用任务: + 下一个到达 = min([t.到达时间 for t in 任务列表 if not t.已开始]) + 当前时间 = 下一个到达 + continue + + 最短任务 = min(可用任务, + key=lambda x: (x.执行时间, 任务列表.index(x))) + + 最短任务.已开始 = True + 当前时间 += 最短任务.执行时间 + 最短任务.完成时间 = 当前时间 + 最短任务.周转时间 = 最短任务.完成时间 - 最短任务.到达时间 + + 完成数量 += 1 + 结果.append(最短任务) + + 周转时间列表 = [] + for i in range(4): + for t in 结果: + if 任务列表[i].任务名称 == t.任务名称: + 周转时间列表.append(str(t.周转时间)) + break + + print(" ".join(周转时间列表)) + + +计算周转时间() \ No newline at end of file