python课后作业44
if temp <0:i = 1
while self.lasted <1:
self.lasted += self.borrow-1
self.lasted -= 1
i += 1
这段代码感觉有问题的吧,borrow借了一位为什么要减1?假如前两位都是零那不是要变成-1了吗?
求大神解答
while self.lasted <1:这个语句是判断要借位的高位是不是0或者负数,如果是就执行下面的i += 1再向高位的高位借位。
因为while是个循环,直到self.lasted不是0或者负数的时候才算借位成功
拿数字举例,10000-1
先是借十位,发现十位不够借,那就通过i += 1控制需要借位的位置,再向高位去借位,直到借到万位的时候发现可以借,然后就可以退出循环了。 cwhsmile 发表于 2019-4-19 00:29
while self.lasted
为什么要self.borrow【index-i】-1? cwhsmile 发表于 2019-4-19 00:29
while self.lasted
而且每执行一次循环高位的高位还要-1,假如高位的高位也是0,那不就成-1了吗,就退不出循环了
λ_KxYdq 发表于 2019-4-19 09:48
为什么要self.borrow【index-i】-1?
10000-1个位不够减,个位要向十位借1,所以十位要减1,减1就是这么来的, λ_KxYdq 发表于 2019-4-19 09:55
而且每执行一次循环高位的高位还要-1,假如高位的高位也是0,那不就成-1了吗,就退不出循环了
while后面的判断条件是小于1,不是大于1,0和-1都是小于1的,条件成立,循环继续执行,怎么就会退出了?
大哥你的思路。。。。。。。。。。。 cwhsmile 发表于 2019-4-19 10:01
while后面的判断条件是小于1,不是大于1,0和-1都是小于1的,条件成立,循环继续执行,怎么就会退出了?
...
判断前一位是否是负数或0:
前一位等于对应进制-1
前一位的前一位-1
i+1
这四句我是这么理解的
那么假如现在我的列表里是【100】三个元素,现在要判断index为3情况,那么self.lasted就是self.lasted就是元素0对吧,进入while循环,然后执行第二句,此时self.lasted = self.borrow-1=31-1=30,self.lasted就是self.lasted=0,执行第三条语句,self.lasted=-1,i变成2,继续while循环,self.lasted=-1<1,self.lasted=12-1=11,然后self.lasted=0,i变成3,再判断的话怎么判断?已经到最高位了 cwhsmile 发表于 2019-4-19 10:01
while后面的判断条件是小于1,不是大于1,0和-1都是小于1的,条件成立,循环继续执行,怎么就会退出了?
...
老哥,你仔细看看,有问题,假如我现在是100 -1,十位变成11,百位变成0,然后i+1=2,但是index没变,那么self.lasted就是百位,还是0,还要循环,百位变成-1,十位变成10,i变为3,才会退出循环, λ_KxYdq 发表于 2019-4-19 11:18
老哥,你仔细看看,有问题,假如我现在是100 -1,十位变成11,百位变成0,然后i+1=2,但是index没变,那么 ...
教你一个调试代码的方法:
把你觉得有疑问的地方复制出来单独建立一个文件,在循环体内加上print()函数,打印出你认为有疑问的地方,然后手工填入循环体所需要的数据。
比如下面的代码,你手动更改temp和i的数值,自己观察变化
temp = 1000
i = 1
while i < 10:
temp = temp - i
#如上面这段代码,你不确定temp和i的数值,就用下面的print()函数输出
print(f'temp是{temp}',f'i是{i}')
i = i + 1
页:
[1]