Python3.9.1中def与return如何实现无返回值 解决乘法表程序输出冗余问题
核心问题拆解
你观察到的末尾多余输出,本质来自两个独立的原因:
- 函数的返回值逻辑:之前写
return(n)会把用户输入的数字作为返回值传递给调用处;如果删成空return,Python会默认让函数返回None——这是Python的统一规则,所有没有显式返回非空值的函数,默认返回值都是None。 - 调用端的冗余打印:你专门写了
x1 = mul_table(x)把函数返回值存下来,又额外执行print(x1),等于不管函数返回的是数字还是None,都会被你强制打印到控制台上。你看到的末尾多余的5、后续会出现的None,全是这行print(x1)打出来的,不是函数运行时自动输出的。
另外你循环里写的i = i + 1属于完全冗余的代码:range(1,11)会自动在每轮循环给i赋下一个迭代值,手动给i自增不会改变循环的执行逻辑,还可能造成逻辑混淆,可以直接删掉。
实现无多余输出的修改方案
完全不需要修改Python的默认返回逻辑,只要调整代码的两个部分即可:
- 函数内部:删掉冗余的自增代码,去掉带返回值的
return(n)语句,保留打印乘法表的核心逻辑。此时函数会默认返回None,但只要不主动打印这个返回值,它不会出现在控制台输出上。 - 调用端:去掉存储返回值的
x1 = ...赋值、以及额外打印返回值的print(x1),直接调用函数即可。
修改后的完整可运行代码:
def mul_table(n): for i in range(1, 11): print(n, "x", i, "=", (n * i)) x = int(input("Enter the number: ")) mul_table(x)
效果说明
按上述代码修改后,在Python 3.9.1环境下运行,输入数字5时,控制台只会依次输出10行乘法表内容,末尾既不会额外打印用户输入的5,也不会出现None的输出。
补充说明:很多人会误以为只要函数返回None,运行时就会自动在控制台打印None——实际上这个行为只出现在Python交互式REPL环境中,写脚本正常运行时,只有被
内容的提问来源于stack exchange,提问作者Choco-Lava
相关产品推荐
相关产品推荐

