import numpy as np
n = eval(input("请输入程序的个数:"))
arrive_time = eval(input("请输入各个程序的到达时间:"))
server_time = eval(input("请输入各个程序的服务时间:"))
start_time = np.zeros(n) # 开始时间
finish_time = np.zeros(n) # 完成时间
whole_time = np.zeros(n) # 周转时间
weightwhole_time = np.zeros(n) # 带权周转时间
now_time = 0 # 需要设置now_time来记录当前时间,等于上一个程序的完成时间
'''
for i in range(n):
if arrive_time[i] < now_time:
print(1)
else:
print(2)
'''
while True:
algorithm = eval(input("请输入1(FCFS)or 2(SJF)or 3(终止时间片轮转程序):"))
if algorithm == 3:
break
elif algorithm == 1: # 采用FCFS算法
for i in range(n):
# 执行一个程序前首先需要判断这个程序的到达时间是否<=当前时间,是则计算开始时间、完成时间、周转时间
if arrive_time[i] <= now_time:
start_time[i] = now_time
finish_time[i] = start_time[i] + server_time[i] # 完成 = 开始 + 服务
whole_time[i] = finish_time[i] - arrive_time[i] # 周转 = 完成 - 到达
weightwhole_time[i] = whole_time[i] / server_time[i] # 带权周转 = 周转 / 服务
now_time = finish_time # 这个程序的完成时间是下个程序的开始时间
else: # 如果在当前时间程序还没到达,那么当前时间就增加,直到有程序到达
while arrive_time > now_time:
now_time += 1
在这段程序中,arrive_time数组已经被赋了初值,我想比较arrive_time[i]和now_time的大小,但是在while循环中总是报错提示我使用any()或者all()进行数组比较。不过我不是要将两个数组比较,我是想将数组中特定位置的元素和一个数比较,所以不能用这两个函数。
然后我就调试代码,发现不在这个循环里,在前面部分这么写是对的,系统不会报错,但是到了while-for 循环里就会报错。
有没有人知道这是为什么呀?求解答!
(缩进在程序里没有问题,他这个显示的有点奇怪)
while arrive_time > now_time:
now_time += 1
这是什么写法,其实不就是now_time=arrive_time 吗
问题是arrive_time是个数组,你怎么去把整个数组和一个数进行比较呢,要加下标啊
now_time=arrive_time[i]
好吧,我知道了,是因为我在后边使用数组是忘了加下标索引,又是被自己蠢哭的一天,5555