# 内部方法,计算运行时间
def _calc(self):
self.lasted = []
self.prompt = "总共运行了"
for index in range(6):
temp = self.end[index] - self.begin[index]
# 低位不够减,需要向高位借位
if temp < 0:
# 测试高位是否有得借,没得借的话再向高位借……
i = 1
# 测试高位是否有得借,高位不为0,就说明有的借;为0没得借的话,还得向更高位借……
while self.lasted[index-i] == 0:
# 当前位没得借,还得向更高位借,先改写当前位的值为换算进制减一(没有也要借^_^)
self.lasted[index-i] = self.borrow[index-i] - 1
# i 继续定位下个高位,直到下个高位不为0
i += 1
# 之前的负值 加上 换算进制 转正
self.lasted.append(self.borrow[index] + temp)
# 将定位的高位值减一,借的就是Ta的
self.lasted[index-i] -= 1
else:
self.lasted.append(temp)
# 由于高位随时会被借位,所以打印要放在最后
for index in range(6):
if self.lasted[index]:
self.prompt += str(self.lasted[index]) + self.unit[index]
# 为下一轮计算初始化变量
self.begin = 0
self.end = 0
测试时答案有问题,个人修改如上(附带说明)
测试代码如下:borrow = [1, 12, 31, 24, 60, 60]
begin = [2022,2,22,16,30,30]
end = [2025,1,23,15,30,30]
lasted = []
for index in range(6):
temp = end[index] - begin[index]
print(f'{index}\t{temp}')
# 低位不够减,需要向高位借位
if temp < 0:
# 测试高位是否有得借,没得借的话再向高位借……
i = 1
while lasted[index-i] == 0:
lasted[index-i] = borrow[index-i] - 1
i += 1
lasted[index-i] -= 1
lasted.append(borrow[index] + temp)
else:
lasted.append(temp)
print(begin)
print(end)
print(lasted)
|