首页 > 编程 > Python > 正文

环境字体对python字符串格式化显示效果的影响

2019-11-08 20:07:53
字体:
来源:转载
供稿:网友

近来用python自带shell学习时遇到的一点问题与大家分享,大神和牛人可能对此不屑敬请跳过,但吾等菜鸟水货初遇此问题还是会纠结好久的,废话不多,先上执行代码。 首先是书上的代码,请看下图: 书里的原始程序 由于书本的主要对象时Python2.X系列,而我这个水货安装的是3.6版本,故此对程序做了一点修改,如下所示:

#字符串格式化实例2width =int (input('请输入宽度: '))PRice_width = 10item_width = width - price_widthheader_format = '%-*s%*s'#这部分还是照搬2.7版本的,为了做个对比#format = '%-*s%*.2f%%'print('='*width)print(header_format %(item_width,'Item',price_width,'Price'))print('-'*width)print("{:*<{}}{:>{}}".format('Apples',item_width,0.40,price_width))print("{:&<{}}{:>{}}".format('Pears',item_width,0.50,price_width)) print("{:-<{}}{:>{}}".format('Cantaloupes',item_width,1.95,price_width)) print("{:=<{}}{:>{}}".format('Dried Apricots(16 oz.)',item_width,8.00,price_width)) print("{:<{}}{:>{}}".format('Prunes (4 lbs.)',item_width,12.00,price_width))print('=' * width)

书上告诉我们结果是这样的: 这里写图片描述

我运行的结果是这样地: 这里写图片描述

囧感十足!然后我就开始了长时间的纠结,为啥我的代码打不出人家书本上的的效果?

研究代码后发现一个问题,理论上’=’与’-‘的打印数量应该是一样的,但看了运行结果却发现’-‘生生的比’=’短了好多。此时我开始怀疑是不是各个字符的长度不同,为了确定这个问题,我尝试修改局部代码,通过打印不同的可打印符号确定是否各个字符之间大小不同。

print("{:*<{}}{:>{}}".format('Apples',item_width,0.40,price_width))print("{:&<{}}{:>{}}".format('Pears',item_width,0.50,price_width)) print("{:-<{}}{:>{}}".format('Cantaloupes',item_width,1.95,price_width)) print("{:=<{}}{:>{}}".format('Dried Apricots(16 oz.)',item_width,8.00,price_width)) print("{:<{}}{:>{}}".format('Prunes (4 lbs.)',item_width,12.00,price_width))

结果如下: 这里写图片描述

到这里大家可以明显的看出不同的字符在Shell显示中的大小是不同的。 思索了好一阵子,也百度和CSDN搜索了一些关键词,但没有解答,突然想到以前改论文的时候字体不同会造成显示效果的不同。于是决定更改一下。

本人机器上安装python的时候默认字体为“微软雅黑”,通过shell界面=>菜单栏Options项=>Configure IDLE选项=>Settings窗口Fonts/Tabs选项卡中修改字体类型,将雅黑改为标准黑体。

更改后结果如下: 这里写图片描述

还原占位字符为空格后,效果如下: 这里写图片描述

好了,终于得到自己要的结果了!

总结: 作为菜鸟弱鸡的我们,在学习过程中难免遇到类似的情况,明明照本宣科的敲代码,然后结果与剧本完全不同。有不少人会以“不要在意这些细节”来安慰自己,然后轻松的跳过去不再理会。实际上当遇到问题时最好认真思索一下,哪怕暂时跳过,也不要完全丢下,日后遇到的问题会更多,总不能都放下跳过。趁学习时期尽量为以后扫清地雷,积累解决问题经验,为扫雷填坑做充分准备。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表