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

Python使用range()调用colla函数无打印输出问题求助

问题根因
  • range(5)生成的序列为0、1、2、3、4,前两个输入值会触发函数异常:
    • 输入值为0时,进入无限死循环:0满足偶数判断,每次执行num = num // 2结果始终为0,永远无法满足num == 1的循环退出条件
    • 输入值为1时,while循环完全不会执行,fin为空列表,后续计算占比时执行len(counter)/len(fin)会触发ZeroDivisionError除以0报错
修复方案

如果你的统计目标是≥2的正整数的考拉兹序列偶变步长占比,可以做两处修改:

  1. 遍历范围改为从2开始,跳过0和1;
  2. 给colla函数增加边界判断,避免非法输入导致崩溃。
修复后代码示例
def colla(num):
    # 增加非法输入拦截
    if num < 2:
        return "非法输入:仅支持≥2的正整数"
    fin = []
    while num != 1:
        if num % 2 == 0:
            num = num // 2
            fin.append(0)
        else:
            num = 3 * num + 1
            fin.append(1)
    counter = [z for z in fin if z == 0]
    return "{:.0%}".format(len(counter)/len(fin))

# 遍历范围改为从2到4(对应原range(5)的有效取值)
for i in range(2,5):   
    print(colla(i))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:45:04