Python while循环生成序列的最大值提取及代码错误排查
代码错误分析
- 触发输出的判断逻辑完全错误:你代码里写的
if n < bigNumber,在当前每次将n乘2的生成逻辑下,n永远比上一轮存储的bigNumber更大,这个条件永远不会成立,print语句根本没有执行的机会。 - 输出时机错误:你要的序列最大值是循环完全结束后得到的最终值,不需要在循环内部做判断输出,只需要在循环终止后打印最终结果即可。
- 循环条件不符合你最初的生成规则:原示例的循环判断条件为
n < 10,你修改成了n <= 10,会多执行一次无效的循环判断。
正确实现方式
方法1:保留你原来的bigNumber变量写法
n = 1 bigNumber = 0 while n < 10: bigNumber = n n = n * 2 # 循环终止时n已经不满足小于10的要求,最后一次记录的bigNumber乘2就是序列最大值 print(bigNumber * 2)
方法2:更简洁的无额外变量写法
直接提前判断乘2后是否满足循环条件,循环终止后直接输出结果即可:
n = 1 while n * 2 < 10: n *= 2 print(n * 2)
两种写法运行后都会输出你需要的结果16。
内容的提问来源于stack exchange,提问作者nutshell_A
相关产品推荐
相关产品推荐

