将指定For循环转换为While循环后出现死循环问题求助
排查并修复你的While循环死循环问题
嘿,我一眼就发现导致死循环的两个关键问题啦,咱们来逐个解决:
问题1:错误的变量自增写法
你写的 i=+1 是赋值操作,它会把i的值固定设为1,而不是让i在原有基础上加1。哪怕循环执行很多次,i永远是1,永远满足i < len(sequence)(列表长度是6),这直接就造成了死循环。
正确的自增写法应该是这两种:
i += 1(推荐的简洁写法)i = i + 1(更直观的写法)
问题2:遇到None时跳过了i的递增
当代码执行到continue时,会直接跳过循环体里剩下的所有代码。你原来的逻辑里,碰到None就continue,导致i的递增代码根本没机会执行,i的值一直停留在当前位置,下一次循环还是检查同一个None,无限循环下去。
修正后的代码
这里提供两种可行的修正方案:
方案1:在continue前先递增i
sequence = [1, 2, None, 4, None, 5] total = 0 i = 0 while i < len(sequence): if sequence[i] is None: print('None') i += 1 # 先让i自增,再跳过后续代码 continue total += sequence[i] i += 1 print(total)
方案2:把i的递增统一放在循环末尾(更简洁)
这种写法不管当前元素是不是None,都会执行i的递增,避免遗漏:
sequence = [1, 2, None, 4, None, 5] total = 0 i = 0 while i < len(sequence): value = sequence[i] if value is not None: total += value else: print('None') i += 1 # 每次循环结束都让i加1 print(total)
运行任意一种修正后的代码,都能得到正确的结果12啦。
内容的提问来源于stack exchange,提问作者hamza
相关产品推荐
相关产品推荐

