Python代码执行后整数结果后出现None的原因咨询
问题原因及解决办法
原因
你的dotProduct函数内部用print(sum)输出了点积结果,但函数没有定义返回值(原本的return sum被注释掉了)。在Python中,没有return语句的函数默认会返回None。
如果是在交互式Python环境(比如Python命令行、Jupyter Notebook)中直接调用这个函数,环境会自动打印函数的返回值,所以就会先输出你想要的sum结果,紧接着输出函数默认返回的None。
解决办法
有两种简单的修复方式:
方式一:让函数返回结果,外部打印
取消注释函数里的return sum,同时删掉内部的print(sum),调用时用print()输出函数返回值:
def dotProduct(listA, listB): assert len(listA) == len(listB) sum = 0 for i in range(len(listA)): sum += listA[i]*listB[i] return sum print(dotProduct([1,2,3], [4,5,6])) print(dotProduct([1, 58, -31, -73, -85, 26, 15, -42], [88, 73, -98, -51, 54, -45, -59, -30]))
方式二:保持函数内部打印,避免环境自动输出返回值
如果想保留函数里的print(sum),可以:
- 把代码放在
.py脚本文件中运行(脚本环境不会自动打印函数返回值); - 或者在交互式环境中调用函数时加个分号,抑制返回值的自动打印:
dotProduct([1,2,3], [4,5,6]); dotProduct([1, 58, -31, -73, -85, 26, 15, -42], [88, 73, -98, -51, 54, -45, -59, -30]);
内容的提问来源于stack exchange,提问作者Lilian Zhang
相关产品推荐
相关产品推荐

