You need to enable JavaScript to run this app. HackerRank FizzBuzz测试程序循环不生效,仅输出单个结果的原因咨询
优惠活动
大模型
产品
解决方案
定价
更多

HackerRank FizzBuzz测试程序循环不生效,仅输出单个结果的原因咨询

代码运行异常的核心原因
  • 循环被提前强制终止:return 语句的作用是立即结束当前函数的执行,将对应值返回给调用位置。你把所有判断分支的 return 都写在了for循环内部,程序第一次遍历到数字列表的第一个元素时,不管匹配哪个判断分支,只要碰到return,整个函数就会直接退出,根本不会继续执行后续的循环迭代。哪怕你传入的n是100,函数最终也只会返回列表第一个元素1,自然得不到全量输出结果。
  • 整除判断逻辑完全无效:Python 3 中使用 / 做除法运算时,无论被除数是否能被除数整除,返回值永远是浮点数类型。比如计算 6/3 得到的结果是2.0,不是整数类型,你写的type(m3) == int、type(m5) == int这类判断永远不会成立,判断逻辑从底层就无法正常工作。
修正方案
  • 不要在循环内部直接返回单个结果,提前初始化空列表收集每一轮循环的计算结果,等所有迭代全部完成后,再统一返回整个结果列表,保证循环能跑完全部n次遍历。
  • 替换掉错误的整除判断方式,用取模运算判断是否能被整除:如果数字对3取模结果为0,代表能被3整除;对5取模结果为0,代表能被5整除,不需要先做除法再判断返回值类型。

修正后的可运行参考代码:

def fizzBuzz(n):
    res = []
    for num in range(1, n + 1):
        if num % 3 == 0 and num % 5 == 0:
            res.append("FizzBuzz")
        elif num % 3 == 0:
            res.append("Fizz")
        elif num % 5 == 0:
            res.append("Buzz")
        else:
            res.append(str(num))
    return res

challenge = fizzBuzz(5)
for item in challenge:
    print(item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 16:45:04