Python如何实现第二列在第一列最长字符串后3空格处左对齐打印
Python列表双列对齐打印方案
原有代码问题
你原来的代码把第一列的宽度写死为10,灵活性差,既无法适配更长的姓名输入,也不能保证第二列的起始位置刚好在最长姓名后3个空格处,需要替换为动态计算的宽度值。
核心思路
先动态计算第一列所有姓名字符串的最大长度,将第一列的总宽度设置为「最长姓名长度 + 3」,即可保证所有行的第二列数字,都从最长姓名末尾往后3个空格的位置开始对齐。
修改后完整代码
vote_count = [('Matthew', 5), ('Harry', 88)] # 计算第一列最长姓名的长度 max_name_len = max(len(name) for name, _ in vote_count) for name, count in vote_count: # 写法1:Python3.6+ 推荐使用f-string,可读性更高 print(f"{name:<{max_name_len + 3}}{count}") # 写法2:兼容你原来的%格式化写法,可直接替换原有print语句 # print("%-*s%i" % (max_name_len + 3, name, count))
运行效果
Matthew 5 Harry 88
完全符合要求的对齐规则。
内容的提问来源于stack exchange,提问作者nz_programmer
相关产品推荐
相关产品推荐

