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

如何修改FizzBuzz函数,使其迭代至指定数且第16次无None返回

解决FizzBuzz函数调用后输出None的问题

问题原因

你的fizzbizz函数内部通过print输出每一项,但函数没有定义return语句——Python中无返回值的函数默认返回None。当你在主程序中执行print(fizzbizz(15))时,会先执行函数内的所有打印操作,再打印函数的返回值None,这就是最后一行None的来源。


方案1:调整函数调用方式(最简修复)

直接调用函数,不用print包裹。因为函数内部已经完成所有打印工作,无需额外打印函数的返回值:

def fizzbizz(number):
    for i in range(1, number + 1):
        if i % 3 == 0 and i % 5 == 0:
            print("fizzBuzz")
        elif i % 3 == 0:
            print("fizz")
        elif i % 5 == 0:
            print("Buzz")
        else:
            print(str(i))

if __name__ == '__main__':
    fizzbizz(15)  # 直接调用,去掉外层print

调用fizzbizz(16)时,输出到16后不会出现None。


方案2:修改函数返回结果(更符合封装逻辑)

让函数收集所有输出项并返回拼接后的字符串,主程序再打印该结果。这样函数有明确返回值,不会返回None:

def fizzbizz(number):
    result = []
    for i in range(1, number + 1):
        if i % 3 == 0 and i % 5 == 0:
            result.append("fizzBuzz")
        elif i % 3 == 0:
            result.append("fizz")
        elif i % 5 == 0:
            result.append("Buzz")
        else:
            result.append(str(i))
    return '\n'.join(result)  # 将列表转为换行分隔的字符串

if __name__ == '__main__':
    print(fizzbizz(15))

这种方式下,调用fizzbizz(16)会输出到16,全程无None出现。

注:原代码的条件判断可简化——前面的if已经排除了同时被3和5整除的情况,后续elif无需额外判断i%5 !=0或i%3 !=0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:50:24