python输出后面多一个None问题
python输出后面多一个None
python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None
例:输入:* 5 6
class Solution: def solve(self, op, num_1, num_2): ''' :type op, num_1, num_2: str, int, int :rtype : Str ''' #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数 #********** Begin *********# ops=['+','-','*','/'] if op in ops: s=eval('%d %s %d'%(num_1,op,num_2)) print("%.2f"%s) #********** End *********#
输出结果:
30.00
None
即相当于:
class Solution: def solve(self, op, num_1, num_2): ''' :type op, num_1, num_2: str, int, int :rtype : Str ''' #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数 #********** Begin *********# ops=['+','-','*','/'] if op in ops: s=eval('%d %s %d'%(num_1,op,num_2)) print("%.2f"%s) return None #********** End *********#
输出结果:
30.00
None
没有None的代码为:
class Solution: def solve(self, op, num_1, num_2): ''' :type op, num_1, num_2: str, int, int :rtype : Str ''' #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数 #********** Begin *********# ops=['+','-','*','/'] if op in ops: s=eval('%d %s %d'%(num_1,op,num_2)) return ("%.2f"%s) #********** End *********#
输出结果:
30.00
pprint打印,输出结果多一个None值
pprint是什么?
pprint是Data Pretty printer的缩写,顾名思义就是让显示结果更加美观。
相较于print而言,pprint打印的数据结构更加完整,更加便于阅读。
尤其是在打印特别长的数据时,print会在一行打印,对人类来说几乎不可读,而pprint可以分行打印。
当使用pprint将数据按照指定宽度打印时,多出一个None值
这也是我的粗心造成的错误,具体看例子比较明白
这是错误的用法
import pprint stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni'] pp = pprint.PrettyPrinter(indent=4, width=20) print(pp.pprint(stuff))
显示结果
[ 'spam', 'eggs', 'lumberjack', 'knights', 'ni'] None
可以看到,后面很明显地多了一个None,原因就在于最后一行的print
正确用法是直接使用pp.pprint语句
import pprint stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni'] pp = pprint.PrettyPrinter(indent=4, width=20) pp.pprint(stuff)
这个时候结果也没错
[ 'spam', 'eggs', 'lumberjack', 'knights', 'ni']
真是在初学python时闹得一个笑话。pprint本就是为了解决print不便于多行打印结果的一个包,一山不容二虎,但上方错误竟没有直接报错而是输出None,其中缘由不得而知。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
最新评论