设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间16 现在时间16 缓存数据 幸好我怀里现在就有个小白羊,每天搂着睡觉香[亲亲]

幸好我怀里现在就有个小白羊,每天搂着睡觉香[亲亲] -- 白羊

查看: 875|回复: 1

python输出后面多一个None问题

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:23
  • 打卡月天数:0
  • 打卡总奖励:281
  • 最近打卡:2025-03-28 08:19:14
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
300
主题
240
精华
0
金钱
1105
积分
588
注册时间
2023-1-25
最后登录
2025-5-31

发表于 2024-11-28 22:44:44 | 显示全部楼层 |阅读模式
目录


  • python输出后面多一个None
  • pprint打印,输出结果多一个None值

    • pprint是什么?
    • 当使用pprint将数据按照指定宽度打印时,多出一个None值
    • 正确用法是直接使用pp.pprint语句

  • 总结

python输出后面多一个None

python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None
例:输入:* 5 6
  1. class Solution:
  2.         def solve(self, op, num_1, num_2):
  3.                 '''
  4.                 :type op, num_1, num_2: str, int, int
  5.                 :rtype : Str
  6.                 '''
  7.                 #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数
  8.                 #********** Begin *********#
  9.         ops=['+','-','*','/']
  10.         if op in ops:
  11.             s=eval('%d %s %d'%(num_1,op,num_2))
  12.             print("%.2f"%s)
  13.                 #********** End *********#
复制代码
输出结果:
  1. 30.00None
复制代码
即相当于:
  1. class Solution:
  2.         def solve(self, op, num_1, num_2):
  3.                 '''
  4.                 :type op, num_1, num_2: str, int, int
  5.                 :rtype : Str
  6.                 '''
  7.                 #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数
  8.                 #********** Begin *********#
  9.         ops=['+','-','*','/']
  10.         if op in ops:
  11.             s=eval('%d %s %d'%(num_1,op,num_2))
  12.             print("%.2f"%s)
  13.             return None
  14.                 #********** End *********#
复制代码
输出结果:
  1. 30.00None
复制代码
没有None的代码为:
  1. class Solution:
  2.         def solve(self, op, num_1, num_2):
  3.                 '''
  4.                 :type op, num_1, num_2: str, int, int
  5.                 :rtype : Str
  6.                 '''
  7.                 #请在此添加代码,实现计算并返回表达式的结果,要求结果保留2位小数
  8.                 #********** Begin *********#
  9.         ops=['+','-','*','/']
  10.         if op in ops:
  11.             s=eval('%d %s %d'%(num_1,op,num_2))
  12.             return ("%.2f"%s)
  13.                 #********** End *********#
复制代码
输出结果:
  1. 30.00
复制代码
pprint打印,输出结果多一个None值


pprint是什么?

pprint是Data Pretty printer的缩写,顾名思义就是让显示结果更加美观。
相较于print而言,pprint打印的数据结构更加完整,更加便于阅读。
尤其是在打印特别长的数据时,print会在一行打印,对人类来说几乎不可读,而pprint可以分行打印。

当使用pprint将数据按照指定宽度打印时,多出一个None值

这也是我的粗心造成的错误,具体看例子比较明白
这是错误的用法
  1. import pprint

  2. stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']

  3. pp = pprint.PrettyPrinter(indent=4, width=20)

  4. print(pp.pprint(stuff))
复制代码
显示结果
  1. [   'spam',
  2.     'eggs',
  3.     'lumberjack',
  4.     'knights',
  5.     'ni']
  6. None
复制代码
可以看到,后面很明显地多了一个None,原因就在于最后一行的print

正确用法是直接使用pp.pprint语句
  1. import pprint

  2. stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']

  3. pp = pprint.PrettyPrinter(indent=4, width=20)

  4. pp.pprint(stuff)
复制代码
这个时候结果也没错
  1. [   'spam',
  2.     'eggs',
  3.     'lumberjack',
  4.     'knights',
  5.     'ni']
复制代码
真是在初学python时闹得一个笑话。pprint本就是为了解决print不便于多行打印结果的一个包,一山不容二虎,但上方错误竟没有直接报错而是输出None,其中缘由不得而知。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持晓枫资讯。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
1
精华
0
金钱
20
积分
17
注册时间
2022-12-29
最后登录
2023-5-8

发表于 前天 18:07 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表