如何编写函数实现两个数字列表对应元素求和的对齐表格输出?
实现对齐的元素求和表格
我来帮你搞定这个需求!首先我们得完善你的max_width辅助函数,让它能准确计算数字列表里元素的最大显示宽度,然后基于这个函数来生成对齐的求和表格。
第一步:补全max_width辅助函数
你的思路是对的,只是需要补全代码,并且让它能处理任意数字列表:
def max_width(numbers): """返回列表中数字转成字符串后的最大宽度""" str_numbers = map(str, numbers) return max(len(s) for s in str_numbers)
这个函数会把列表里的每个数字转成字符串,然后找出最长字符串的长度——这就是我们实现对齐需要的基准宽度。
第二步:编写生成对齐表格的主函数
接下来写主函数,它会接收两个数字列表,先检查长度是否匹配,然后计算各部分的最大宽度,最后输出对齐的求和行:
def generate_aligned_sum_table(list1, list2): # 先检查两个列表长度是否一致,避免后续出错 if len(list1) != len(list2): raise ValueError("两个列表的长度必须相同哦!") # 计算三个部分的最大宽度:第一个列表元素、第二个列表元素、求和结果 width_first = max_width(list1) width_second = max_width(list2) sum_results = [a + b for a, b in zip(list1, list2)] width_sum = max_width(sum_results) # 遍历每一对元素,生成对齐的字符串并打印 for num1, num2, total in zip(list1, list2, sum_results): # 使用格式化字符串实现右对齐,每个元素占对应最大宽度 print(f"{num1:{width_first}} + {num2:{width_second}} = {total:{width_sum}}")
测试示例
用你提供的列表测试一下:
List_numbers_1 = [3, 54, -30] List_numbers_2 = [65, 8, 800] generate_aligned_sum_table(List_numbers_1, List_numbers_2)
运行后会输出:
3 + 65 = 68 54 + 8 = 62 -30 + 800 = 770
完全符合你想要的对齐效果!
代码说明
max_width:核心是把数字转字符串后取最大长度,为对齐提供标准;generate_aligned_sum_table:- 先校验列表长度,防止出现索引不匹配的问题;
- 分别计算三个部分的最大宽度,确保每一列都能对齐;
- 利用Python的f-string格式化功能,
{num:{width}}会自动把数字右对齐到指定宽度,完美适配数字的对齐需求; - 遍历每一组元素,输出格式化后的求和行。
这样就顺利实现了你需要的功能啦!
内容的提问来源于stack exchange,提问作者Inti
相关产品推荐
相关产品推荐

