You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写函数实现两个数字列表对应元素求和的对齐表格输出?

实现对齐的元素求和表格

我来帮你搞定这个需求!首先我们得完善你的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:
    1. 先校验列表长度,防止出现索引不匹配的问题;
    2. 分别计算三个部分的最大宽度,确保每一列都能对齐;
    3. 利用Python的f-string格式化功能,{num:{width}}会自动把数字右对齐到指定宽度,完美适配数字的对齐需求;
    4. 遍历每一组元素,输出格式化后的求和行。

这样就顺利实现了你需要的功能啦!

内容的提问来源于stack exchange,提问作者Inti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:51:39