You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何复用Python中Collatz猜想的判断逻辑以避免重复代码?

Collatz猜想Python实现优化方案

原代码存在的问题

  • 输入检查不完整:仅处理负数,未覆盖0和非整数输入,且第二次输入未转换为整数类型
  • 嵌套循环导致逻辑冗余:多次重复判断c0 == 1,代码结构复杂
  • 输入提示重复,用户体验不佳

优化后的代码

# 确保获取合法的正整数输入
while True:
    try:
        c0 = int(input("Enter a non-negative and non-zero integer number: "))
        if c0 > 0:
            break
        print("请输入大于0的整数!")
    except ValueError:
        print("输入无效,请输入整数!")

steps = 0

# Collatz猜想核心逻辑
while c0 != 1:
    if c0 % 2 == 0:
        c0 = c0 // 2  # 使用整数除法避免浮点数问题
    else:
        c0 = 3 * c0 + 1
    steps += 1
    print(c0)

print(f"steps = {steps}")

优化说明

  • 输入处理优化:通过try-except捕获非整数输入,循环直到用户输入合法正整数,一次性覆盖负数、0、非整数的异常情况,无需重复编写输入提示
  • 逻辑简化:采用单层while循环,仅在循环入口判断是否达到终止条件(c0 == 1),内部单次判断奇偶性执行对应操作,消除原代码的嵌套循环和重复判断,逻辑更清晰
  • 类型稳定性:用整数除法//替代浮点除法/,保证c0始终为整数,避免后续判断出现类型问题
  • 代码可读性:结构扁平化,减少冗余代码,便于维护和理解

内容的提问来源于stack exchange,提问作者Dream

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:51:00