使用python print打印函数返回值多一个None的问题探究
废话少说,先上问题代码
import random
def printMatrix(n):
count = 0
for i in range(n):
for j in range(n):
print(str(random.randint(0, 1)),end=' ')
print("\r")
def main():
n = eval(input("Enter a number:"))
answer=printMatrix(n)
return answer
print(main())
输出结果为:
Enter a number:5
1 0 0 0 0
1 1 0 1 1
1 1 1 0 0
0 0 1 0 0
1 0 0 1 1
None
很明显,在我们程序输出的尾部出现了一个扎眼的 ”None“
这是为什么呢?
那我们再看看更改后的代码
import random
def printMatrix(n):
count = 0
for i in range(n):
for j in range(n):
print(str(random.randint(0, 1)),end=' ')
print("\r")
def main():
n = eval(input("Enter a number:"))
answer=printMatrix(n)
return answer
main()
输出结果如下:
Enter a number:5
1 0 0 1 1
1 1 1 0 1
1 1 1 0 1
1 1 0 1 0
0 1 0 1 0
此时结尾的 ”None“ 消失了
我们发现似乎 "None"的出现,与我们最后调用函数时有没有用print()有关
至此,我们找到了问题的根源
但是,为什么会发生这种情况呢?
我在书上找到了答案↓
放到我们这个题目中来说就是,print函数无论如何都会返回一个值,我们起初的printMatrix(n)函数没有return,也就是没有返回值,那么下一步的main()函数没有接收到他所传递的值,从而导致print函数没有东西来输出,从而会输出None这么个东西