你一定遇到过下面的输出不好看的问题!

在这里插入图片描述

每一行每一个数据开头对不齐,也对不上顶部数据名!就很烦,我搜了很多解决的方案,最后锁定了一篇文章,本文章代码改编自https://blog.csdn.net/qq_37608398/article/details/90637409

经过我的测试,确实好用,但是作者发的是自己的程序的解决方法,因此为了一劳永逸的解决同学们的烦恼,我把它万能化了:

只需要根据你的程序修改4个地方,就能让你的输出变得好看!!

直接上源代码:(需要修改的4个地方已经注释!其他地方不要改变!)

Output_content = []  #把你要输出的内容赋值给这个列表,!!!注意保存的必须是字符串str
def show_all():
    a = "=" *80    #边框长度,自行调整
    b = 19         #输出格式总长度,自行调整
    c = ["姓名","电话","QQ","邮箱","微信"]  #顶部数据名,请自行编辑“”内的内容
    print("-" * 50)
    if len(Output_content) == 0:
        print("没有保存任何数据!!!!")
        return
    print(a)
    headList = c
    headStr = "".join([x + " " * (b - lenStr(x)) for x in headList])
    print(headStr)
    print(a)
    for e in Output_content:
        d = [e["name"],e["phone"],e["qq"],e["email"],e["vx"]]  #[]内容根据你保存列表的key编辑
        lineStr = "".join([x + " " * (b - lenStr(x)) for x in d])
        print(lineStr)
    print(a)
    print("\n")

def lenStr(string): #计算长度
    count = 0
    for line in string:
        if isCh(line):
            count = count + 2
        else:
            count = count + 1
    return count

def isCh(ch):  #判断是否中文
    if ch >='\u4e00' and ch <= '\u9fa5':
        return True
    else:
        return False

如果你不懂怎么改,看以下测试,带教程!!

我们随便搜个学生信息管理系统测试一下:

这是程序的输出模块:
在这里插入图片描述

我们先找到保存学生信息的代码,把信息保存进Output_content这个列表

找到保存信息的代码:(最后一行的代码就是保存到列表中)
在这里插入图片描述
我们直接改掉列表名字:(用ctrl+R快捷键替换功能全部改掉)
改好了,只要是stuInfo的名字都改成Output_content
在这里插入图片描述
然后把源代码复制进来,把原来的输出函数删除!!
到这一步基本完成了,如果出现error,视情况修复。

接下来是改那4个地方了!!

原来的代码里面,输出格式只有三项,name sex phone,我们把格式改成跟它一样就行
在这里插入图片描述
我们的万能show_all函数修改后是这样的:

def show_all():
    a = "=" *80    #边框长度,自行调整
    b = 19         #输出格式总长度,自行调整
    c = ["姓名","性别","电话"]  #顶部数据名,请自行编辑“”内的内容
    print("-" * 50)
    if len(Output_content) == 0:
        print("没有保存任何数据!!!!")
        return
    print(a)
    headList = c
    headStr = "".join([x + " " * (b - lenStr(x)) for x in headList])
    print(headStr)
    print(a)
    for e in Output_content:
        d = [e["name"],e["sex"],e["phone"]]  #[]内容根据你保存列表的key编辑
        lineStr = "".join([x + " " * (b - lenStr(x)) for x in d])
        print(lineStr)
    print(a)
    print("\n")

修改好后可以开始测试了,这时候我发现程序运行不了!!
很尴尬
在末尾加上这一句就可以了
所以啊,出现错误不要慌,你们出现其他错误,视情况自行修改!!

if __name__ == '__main__':
    main()

我们看看运行效果如何:

我们会发现有一丝丝的错位,这是因为前一个数据长度不同会稍微影响后面一个数据的位置
但是相比较以前我们的输出格式,已经非常完美了。
在这里插入图片描述

总结来看有局限性,但很方便啊,再也不用自己用format来对齐了

自己找一个程序改一下试试吧,记得点收藏
然后感谢Rambo.Fan原文的作者的点子

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐