Fring 发表于 2020-12-9 13:18
好的,好开心。真心感谢,能再给我解释其中last变量假设的使用方法和思维。
不着急的话我就一点一点说了,我说的模糊的地方你可以指出来,慢慢弄明白 逃兵 发表于 2020-12-9 13:33
不着急的话我就一点一点说了,我说的模糊的地方你可以指出来,慢慢弄明白
好的,太谢谢了 last记录上一次的状态,如果是正面设置为1, 反面则设置为2
因为你在第一次掷硬币的时候,没有上一次。所以初始时,last=0
掷第一次硬币,如果是正面(函数第25行,if num % 2 :)在最下面会重新给last赋值last=1(函数第41行,last = 1)
如果是反面(函数第42行,else:),在最下面会重新给last赋值last=2(函数第58行,last = 2)
这个last在下次循环就有了新值(1或者2)就能用来判断条件函数(函数第33行,if last == 2:)(函数第50行,if last == 1:) 逃兵 发表于 2020-12-9 14:09
last记录上一次的状态,如果是正面设置为1, 反面则设置为2
因为你在第一次掷硬币的时候,没有上一次。所 ...
也就是说:
1、实际上 last = 1 和last = 2 实际上是其互相循环并赋值的作用的。
①因为只要正面次数开始重新计算的时候,因为上一次是反面,所以就在运行符合正面条件的语句里面,其中的if last == 2 实际上就是和else 语句里面的last = 2 相互对应了,最终导致的结果就是正面的连续次数就开始中断了,于是又要开始从1次正面开始重新统计连续正面次数。
②同理,如果,上一次是正面,那么在符合反面条件的语句里面,其中的 if last == 1 实际上就和 if num % 2:条件语句里面的last = 1 相互对应了,最最终也就是导致反面的连续次数就开始中断了,于是又要开始从1次反面开始重新统计连续反面次数。
2、我的理解有问题没啊? Fring 发表于 2020-12-9 14:24
也就是说:
1、实际上 last = 1 和last = 2 实际上是其互相循环并赋值的作用的。
①因为只要正面次数 ...
正确 关于判断连续出现最多次数的逻辑
因为每次在正面之后出现反面,连续正面就会复位归零
反之,在每次出现反面之后出现症面,连续反面就会复位归零
之后判断最大的连续次数
max_heads和max_tails也是被循环赋值的
判断连续正面的次数是否比max_heads大,如果是,取而代之。如果否,max_heads不变
判断连续反面的次数是否比max_tails大,如果是,取而代之。如果否,max_tails不变
逃兵 发表于 2020-12-9 14:35
关于判断连续出现最多次数的逻辑
因为每次在正面之后出现反面,连续正面就会复位归零
嗯嗯嗯,明白了,谢谢啊。学这个语言,如果真的没有得到及时反馈的话,如果只看教材,我估计根本就掌握不了许多常识性的东西。编程真的好难!!!! 逃兵 发表于 2020-12-9 14:35
关于判断连续出现最多次数的逻辑
因为每次在正面之后出现反面,连续正面就会复位归零
嗯嗯,明白了THANK YOU!
页:
1
[2]