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

Python如何编写可返回表格各行内容的函数,避免重复调用print

解决方案

你当前的get_table函数存在两个核心问题:

  1. 没有显式return语句,函数执行完默认返回None,所以你外部print(table)的时候会多输出一个None
  2. 表格行生成逻辑直接调用print输出,没有把内容收集后作为返回值返回

优化后的函数代码

def get_table(age_tuple: list) -> str:
    """Accepts a list of tuples (age, index) where the index refers to the age
    group in the get_groups() function."""
    group_id = get_groups()
    # 用列表收集所有表格行
    table_rows = []
    # 添加表头,如果你不需要markdown格式的表格,也可以改成纯文本对齐的表头
    table_rows.append("| No. | Age | Group |")
    # 添加表头分隔行
    table_rows.append("| --- | --- | --- |")
    # 循环生成数据行
    for ndx in range(len(age_tuple)):
        age = age_tuple[ndx][0]
        index = age_tuple[ndx][1]
        group = group_id[index]
        # 按格式拼接行,要纯文本对齐的话可以沿用你之前的ljust写法:
        # row = str(ndx + 1).ljust(5) + str(age).ljust(5) + group
        row = f"| {ndx + 1} | {age} | {group} |"
        table_rows.append(row)
    # 所有行用换行符拼接成完整字符串返回
    return '\n'.join(table_rows)

调用方式说明

你原来的调用代码不需要修改,直接使用即可,现在外部的print(table)打印的就是函数返回的完整表格字符串,不会出现冗余输出:

import age_analyze

ages = [20, 33, 99, 6, 21]
my_list = age_analyze.get_age_tuples(ages)
table = age_analyze.get_table(my_list)
print(table)

改动说明

  • 移除了函数内部的print调用,所有内容先存储到列表中,避免内部直接输出导致的重复打印问题
  • 完整实现了函数声明的返回字符串的逻辑,不会再返回None
  • 用列表存储行再统一拼接的方式,比循环中直接拼接字符串的效率更高,适合数据量稍大的场景
  • 表格格式可以灵活调整,只需要修改表头和数据行的拼接逻辑即可,收集行的核心逻辑不需要改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:03