如何解决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
相关产品推荐
相关产品推荐

