Python判断偶数方法及Collatz猜想程序异常求助
修复Collatz猜想程序的偶数判断问题
你的代码核心问题出在奇偶判断的对象错误,同时还有两个细节问题导致程序异常:
问题分析
- 你一直用
original_collatz来判断奇偶,但这个变量只有在序列走到1时才会递增,循环过程中它的值是固定的(初始为7,后续递增后也保持不变),完全没有跟踪当前正在处理的collatz值,导致程序始终按照初始数的奇偶执行分支,忽略了后续数的偶数判断。 - 使用
/做除法会得到浮点数(比如4/2=2.0),最终序列会停在1.0,无法触发collatz == 1的结束判断。 - 当序列走到1、
original_collatz递增后,没有重置collatz为新的初始值,导致后续会重复处理1→4→2→1的循环。
修复后的代码
# collatz program import time original_collatz = 7 collatz = original_collatz new_collatz = collatz while True: # 改为判断当前collatz的奇偶 if collatz % 2 == 1: new_collatz = (collatz * 3) + 1 elif collatz % 2 == 0: # 用整数除法//保证结果为整数 new_collatz = collatz // 2 collatz = new_collatz print(collatz) if collatz == 1: print('woo hoo') original_collatz += 1 # 重置collatz为新的初始值,开始下一个序列 collatz = original_collatz new_collatz = collatz time.sleep(1)
关键修改点
- 将奇偶判断的变量从
original_collatz替换为collatz,确保每次迭代判断的是当前正在处理的数。 - 用
//整数除法替代/,避免产生浮点数,保证collatz == 1的判断能正常触发。 - 当序列走到1时,重置
collatz和new_collatz为递增后的original_collatz,开始处理下一个数的Collatz序列。
内容的提问来源于stack exchange,提问作者rhodrhid
相关产品推荐
相关产品推荐

