chong0918 发表于 2020-8-24 20:33:39

sunrise085 发表于 2020-8-24 19:58
小甲鱼的这段程序的确有问题
低位需要向高位借 的这一段 if 程序的问题我帮你修改了。做了注释

懂了,谢谢你

开心小傻猪 发表于 2020-8-29 22:18:45

sunrise085 发表于 2020-8-24 19:58
小甲鱼的这段程序的确有问题
低位需要向高位借 的这一段 if 程序的问题我帮你修改了。做了注释

老师我有个疑问,上一位先减一在与0对比判断能不能借位和直接与1对比判断有什么区别吗

昨非 发表于 2020-8-29 22:28:09

sunrise085 发表于 2020-8-24 19:58
小甲鱼的这段程序的确有问题
低位需要向高位借 的这一段 if 程序的问题我帮你修改了。做了注释

同问{:10_254:}

sunrise085 发表于 2020-8-29 23:55:00

开心小傻猪 发表于 2020-8-29 22:18
老师我有个疑问,上一位先减一在与0对比判断能不能借位和直接与1对比判断有什么区别吗

#低位不够,向高位借
            if temp<0:
                # 测试高位是否有得“借”,没得借的话向再高位借......
                i=1
                while self.lasted<1:
                  self.lasted+=self.borrow-1   
                  self.lasted-=1   
                  i+=1
看这几行代码,这是原来的代码,给你讲一下
假设,现在self.lasted赢计算出来前几位了假设是。
现在计算最后一位 秒 。index=5,得到的temp是-2,小于0,需要借位,进入if语句块,i=1,

第一次判断while循环
while判断它的上一位,也就是现在数组中的最后一个,为0,小于1,那么需要进入while循环,向再上一位借位
执行 self.lasted+=self.borrow-1,lasted列表的最后一位原来为0,变为 0+60-1=59,这一位是正常的没问题。
然后执行 self.lasted-=1,lasted列表的倒数第二位自减1,原来为1,变成了0
i+=1,i=2

第二次判断while循环
while判断它的上一位,也就是现在数组中的倒数第二个,为0,小于1,那么需要进入while循环,向再上一位借位
执行 self.lasted+=self.borrow-1,lasted列表的最后一位原来为0,变为 0+24-1=23,这一位出错了吧,正常情况下原来这里是1,借一下之后变为0,然后就不用再借了,但是while的条件是小于1就继续循环,所以就再借了。
然后执行 self.lasted-=1,lasted列表的倒数第二位自减1,原来为1,变成了0
i+=1,i=3

第三次判断while循环条件,和第二次一样,也会出错

也就是说若借位的时候,遇到了1,那么就会借位出错

开心小傻猪 发表于 2020-8-30 11:37:04

sunrise085 发表于 2020-8-29 23:55
看这几行代码,这是原来的代码,给你讲一下
假设,现在self.lasted赢计算出来前几位了假设是

谢谢老师的解答

sunrise085 发表于 2020-8-30 12:28:27

昨非 发表于 2020-8-29 22:28
同问

看楼上

昨非 发表于 2020-8-30 12:31:11

sunrise085 发表于 2020-8-30 12:28
看楼上

嗯,谢谢

zhangfeiwen 发表于 2020-9-20 15:06:56

学到了 算了好久
页: 1 [2]
查看完整版本: 第44课课后习题0,设置定时器借位问题