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

如何解决Python代码打印字符串后额外输出None的问题

问题原因

你自定义的printNTimes函数没有显式声明返回值,Python中所有未指定return语句的函数,执行完成后都会默认返回None。
你调用printNTimes(phrase, number)的时候,函数内部已经循环打印了指定次数的字符串,此时你又将函数的默认返回值None赋值给allTogether变量,再执行print(allTogether),就输出了多余的None。

解决方案

有两种常用修改方式,按需选择即可:

方案1:删除多余的返回值打印逻辑

因为函数本身已经实现了打印功能,不需要额外接收返回值再打印,直接调用函数即可,同时建议不要用str作为变量名(会覆盖Python内置的字符串类型关键字,后续可能引发其他异常)。
修改后的完整代码如下:

current_input = input("Please enter y to start the program: ")
while current_input == 'y':
    def printNTimes(s, n):
        for i in range(n):
            print(s)

    phrase = input("Enter a string: ")
    number = int(input("Enter a positive number: "))

    # 直接调用函数完成打印,无需接收返回值
    printNTimes(phrase, number)

    print()    
    current_input = input("Please enter y if you want to continue: ")
print("DONE")

方案2:修改函数使其返回拼接好的字符串再打印

如果你需要将打印内容先存入变量再统一输出,可以修改printNTimes函数,让它返回拼接完成的字符串而不是在内部直接打印:

current_input = input("Please enter y to start the program: ")
while current_input == 'y':
    def printNTimes(s, n):
        # 返回n个目标字符串用换行拼接的结果
        return '\n'.join([s for _ in range(n)])

    phrase = input("Enter a string: ")
    number = int(input("Enter a positive number: "))

    allTogether = printNTimes(phrase, number)
    print(allTogether)

    print()    
    current_input = input("Please enter y if you want to continue: ")
print("DONE")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:39:03