Python打印函数返回值额外输出None的解决方法
多余None的产生原因
Python 中所有函数如果没有显式使用return指定返回值,默认会返回None。你编写的original_num函数仅包含内部打印逻辑,没有声明返回值,因此执行后默认返回None;powerLoop返回的是original_num(upto)的执行结果,本质就是返回None。当你调用print(powerLoop(upto))时,除了函数内部执行时打印的5行计算结果,还会额外打印这个返回的None,就是你看到的末尾多余内容。
保留return写法的解决方案
方案1:调整函数逻辑,返回拼接好的结果字符串
把计算结果收集后拼接为符合输出格式的字符串返回,外层print直接打印该字符串即可,和原有输出效果完全一致:
upto = 5 def original_num(upto:int): output_lines = [] for x in range(1, upto+1): output_lines.append(f"{x} {(7**x)%97}") # 把所有行用换行符拼接成完整字符串返回 return "\n".join(output_lines) def powerLoop(upto: int): return original_num(upto) print(powerLoop(upto))
方案2:保留原有内部打印逻辑,显式返回空字符串
如果不想修改原有函数的打印逻辑,只需要给original_num加一行显式返回空字符串的语句即可,外层print打印空字符串不会产生可见内容,也不会出现多余的None:
upto = 5 def original_num(upto:int): for x in range(1, upto+1): print (x, (7**x)%97) # 显式返回空字符串替代默认的None return "" def powerLoop(upto: int): return original_num(upto) print(powerLoop(upto))
内容的提问来源于stack exchange,提问作者Broski
相关产品推荐
相关产品推荐

