|
发表于 2019-11-9 21:07:01
|
显示全部楼层
- # 内部方法,计算运行时间
- 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)
复制代码 |
|