关于小甲鱼学python044课后题的第0题的一些疑问
本来准备上传图片的,但是限制3个,然后中途退出了,既然就已经达到上传上限了。希望论坛可以改进一下,在还没有发表之前,怎么也不能算用过了吧。begin = (2017, 11, 22, 14, 0, 47,)
end = (2017, 11, 22, 15, 0, 41,)
lasted = []
borrow =
for index in range(6):
temp = end - begin
if temp < 0:
i = 1
while lasted < 1:
lasted += borrow -1
lasted -= 1
i += 1
lasted.append(borrow + temp)
lasted -= 1
else:
lasted.append(temp)
print(lasted)
print(lasted)
上面的代码得到的结果是
0, 0, 0, 1, 0, 54
[-2, 10, 29, 23, 57, 54]
为何索引出来的结果和打印列表出来的结果不同呢
当我在 if 语句里只保留 lasted.append(borrow + temp) 时:
begin = (2017, 11, 22, 14, 0, 47,)
end = (2017, 11, 22, 15, 0, 41,)
lasted = []
borrow =
for index in range(6):
temp = end - begin
if temp < 0:
# i = 1
# while lasted < 1:
# lasted += borrow -1
# lasted -= 1
# i += 1
#
lasted.append(borrow + temp)
# lasted -= 1
else:
lasted.append(temp)
print(lasted)
print(lasted)
得到的结果如下:
0, 0, 0, 1, 0, 54
那么这段代码到底有什么用呢,不用 while 语句里的代码也可以得到同样的结果,而且在直接打印列表与 索引的结果也是一致的。 @小甲鱼 我也刚学到这里。按照读取语句来分析:
i = 1
while lasted < 1:
lasted += borrow -1
lasted -= 1
i += 1
这段代码根本就没有机会进行读取。
因为时间是从年月日时分秒依次读取的。只要不是乱设置,结束年份不可能小于开始年份。所以lasted永远大于等于0。
后面的语句,一旦temp<0,会执行高位减一,本位加借位的操作。
lasted.append(borrow + temp) ##本位加借位列表对应的数
lasted -= 1 ##高位减一
操作后,存进lasted的数均>0,不会触发lasted < 1的情况。
例如:(这里假设1个月都有31天)
结束时间为: (2017, 5, 15, 20, 30, 40)
开始时间为: (2016, 10, 20, 22, 40, 50)
利用算术直接相减的结果为:(1,-5,-5,-2,-10,-10)##例子中的-5会经过处理后再放入列表,不存在连续两位为负数的情况。
而我们读得懂的期望结果为(0,6,25,9,49,50)。
目前# lasted -= 1,结果为,刚好少了高位借位的步骤。把这个语句加上再试试吧。
重新调试了一下,发现运行你提供的参数,还是需要执行while语句,不过执行逻辑和甲鱼老师的不一样。
最大的改变是把下列两条语句移到for循环的开始,然后再执行while语句:
lasted.append(borrow + temp)
lasted -= 1
其中,while语句逻辑有少量改动,详见我的帖子:
http://bbs.fishc.com/thread-101090-1-1.html payton24 发表于 2017-12-7 16:29
重新调试了一下,发现运行你提供的参数,还是需要执行while语句,不过执行逻辑和甲鱼老师的不一样。
最大 ...
3Q,我试试
页:
[1]