鱼C论坛

 找回密码
 立即注册
查看: 2703|回复: 5

关于44课后作业的问题

[复制链接]
发表于 2017-6-29 18:51:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 pythonueser 于 2017-7-1 17:52 编辑

0道题  小甲鱼老师的程序里
def _calc(self):
        self.lasted = []
        self.prompt = "总共运行了"
        for index in range(6):
            temp = self.end[index] - self.begin[index]

            # 低位不够减,需向高位借位
            if temp < 0:
                # 测试高位是否有得“借”,没得借的话向再高位借......
                i = 1
                while self.lasted[index-i] < 1:
                    self.lasted[index-i] += self.borrow[index-i] - 1
                    self.lasted[index-i-1] -= 1
                    i += 1
               
                self.lasted.append(self.borrow[index] + temp)
                self.lasted[index-1] -= 1
            else:
                self.lasted.append(temp)
while 循环 我没有看明白 比如 现在的时间是1996年6月6日20时30分30秒  计时停止的时间是1997年6月6日20时30分29秒   两者相减结果是10000 -1
while第一次循环 self.lased[4] = 59  self.lasted[3] = -1
while第二次循环 self.lased[3] = 22  self.lasted[2] = -1
while第三次循环 self.lased[2] = 29 self.lasted[1] = -1
while第四次循环 self.lased[1] = 10  self.lasted[0] = -1
请问高手是不是这样的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-1 11:13:37 | 显示全部楼层
你的想法不对
第一次循环 1997-1996 结果为1
第二次循环 6-6 结果为 0
第三次循环 6-6 结果为 0
第四次循环 20-20 结果为 0
第五次循环 30-30 结果为 0
最后一次循环 29- 30 不够要跟高位借位 ,结果只有第0个借位
这个时候进入内部循环while self.lasted[index-i] < 1,index此时为5
第一次 self.lased[4] = 59 分
第二次 self.lased[3] = 23 时
第三次 self.lased[2] = 29 日
第四次 self.lased[2] = 11 月
能明白不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-1 18:33:34 | 显示全部楼层
lumber2388779 发表于 2017-7-1 11:13
你的想法不对
第一次循环 1997-1996 结果为1
第二次循环 6-6 结果为 0

没有明白啊 进入内部循环   
第一次循环  i =1   index = 5
self.lasted[index-i] += self.borrow[index-i] - 1 = self.lasted[4] +=self.borrow[4] - 1 = 0 + (60-1) = 59
self.lasted[index-i-1] -= 1  = self.lasted[5-1-1] -= 1  = 0-1 = -1
第二次循环  i =2   index = 5
self.lasted[index-i] += self.borrow[index-i] - 1 = self.lasted[3] +=self.borrow[3] - 1 = -1 + (24-1) =22
self.lasted[index-i-1] -= 1  = self.lasted[5-2-1] -= 1  = 0-1 = -1
第三次循环  i =3   index = 5
self.lasted[index-i] += self.borrow[index-i] - 1 = self.lasted[2] +=self.borrow[2] - 1 = -1 + (31-1) =29
self.lasted[index-i-1] -= 1  = self.lasted[5-3-1] -= 1  = 0-1 = -1
第四次循环  i =4   index = 5
self.lasted[index-i] += self.borrow[index-i] - 1 = self.lasted[1] +=self.borrow[1] - 1 = -1 + (12-1) =10
self.lasted[index-i-1] -= 1  = self.lasted[5-4-1] -= 1  = 0-1 = -1
第五次循环  i =5   index = 5
self.lasted[index-i] += self.borrow[index-i] - 1 = self.lasted[0] +=self.borrow[0] - 1 = -1 + (1-1) =-1
self.lasted[index-i-1] -= 1  = self.lasted[5-5-1] -= 1  = 0-1 = -1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-1 20:56:13 | 显示全部楼层
pythonueser 发表于 2017-7-1 18:33
没有明白啊 进入内部循环   
第一次循环  i =1   index = 5
self.lasted += self.borrow - 1 = self.la ...

你的self.lasted大部分为-1是哪里来的? 你肯定理解错了
外部循环最开始计算的temp分别是1 0 0 0 0 -1
所以lasted中第1个到第5个的值是 1 0 0 0 0 只有最后一个因为temp为-1才会进入循环的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-1 22:05:42 | 显示全部楼层
lumber2388779 发表于 2017-7-1 20:56
你的self.lasted大部分为-1是哪里来的? 你肯定理解错了
外部循环最开始计算的temp分别是1 0 0 0 0 -1
...

对啊  temp=-1时 进入内部while循环
那第一次循环
self.lasted[index-i] += self.borrow[index-i] - 1
self.lasted[index-i-1] -= 1
这2步输出的是什么值啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-1 23:00:26 | 显示全部楼层
pythonueser 发表于 2017-7-1 22:05
对啊  temp=-1时 进入内部while循环
那第一次循环
self.lasted += self.borrow - 1

恩 的确跟你三楼所说的一样 程序逻辑有点问题 ,如果上一个是0的话应该self.lasted[index-i] += self.borrow[index-i] - 1然后直接i+=1和continue
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-22 02:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表