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

修改返回元组的Python函数输出格式,去除括号引号等符号

统计函数输出格式优化方案

问题背景

我编写了如下统计函数:

# 注意:原代码缺少statistics模块导入,实际运行需补充
def print_basic_statistics(*numbers, output = ""):

    mean = (f"The mean of {numbers} is {statistics.mean(numbers):.1f}")
    median = (f"The median of {numbers} is {statistics.median(numbers):.1f}")
    standard_deviation = (f"The standard deviation of {numbers} is {statistics.stdev(numbers):.1f}")
    variance = (f"The variance of {numbers} is {statistics.variance(numbers):.1f}")

    if output == "mean":
        return mean
    elif output == "median":
        return median
    elif output == "sd":
        return standard_deviation
    elif output == "var":
        return variance
    else:
        return mean, median, standard_deviation, variance


print_basic_statistics(91, 82, 19, 13, 44)

当不指定output参数时,当前输出是带括号、单引号的元组形式:

Out[108]: 
('The mean of (91, 82, 19, 13, 44) is 49.8.',
 'The median of (91, 82, 19, 13, 44) is 44.0.',
 'The standard deviation of (91, 82, 19, 13, 44) is 35.6.',
 'The variance of (91, 82, 19, 13, 44) is 1267.7.')

我希望输出格式为每行单独显示,去掉多余的括号和单引号:

Out[108]: 
The mean of (91, 82, 19, 13, 44) is 49.8.
The median of (91, 82, 19, 13, 44) is 44.0.
The standard deviation of (91, 82, 19, 13, 44) is 35.6.
The variance of (91, 82, 19, 13, 44) is 1267.7.

不想通过在每个分支写print语句来实现,希望避免代码重复。

解决方案

方法1:返回格式化字符串,外部统一打印

将统计结果存入字典,根据output参数选择对应内容,全部输出时用换行符拼接成单个字符串,最后返回结果,外部调用时打印即可:

import statistics

def print_basic_statistics(*numbers, output = ""):
    # 用字典存储所有统计结果,结构更清晰
    stats_dict = {
        "mean": f"The mean of {numbers} is {statistics.mean(numbers):.1f}.",
        "median": f"The median of {numbers} is {statistics.median(numbers):.1f}.",
        "sd": f"The standard deviation of {numbers} is {statistics.stdev(numbers):.1f}.",
        "var": f"The variance of {numbers} is {statistics.variance(numbers):.1f}."
    }
    
    # 根据output参数返回对应内容
    if output in stats_dict:
        return stats_dict[output]
    else:
        # 全部输出时用换行符拼接
        return '\n'.join(stats_dict.values())

# 调用并打印结果
print(print_basic_statistics(91, 82, 19, 13, 44))

这种方式既保留了函数的返回值特性,又能通过一次print得到干净的输出格式。

方法2:函数内部统一处理输出逻辑

如果希望函数直接完成打印操作,可将打印逻辑抽离出来,只写一次,避免分支重复代码:

import statistics

def print_basic_statistics(*numbers, output = ""):
    stats_dict = {
        "mean": f"The mean of {numbers} is {statistics.mean(numbers):.1f}.",
        "median": f"The median of {numbers} is {statistics.median(numbers):.1f}.",
        "sd": f"The standard deviation of {numbers} is {statistics.stdev(numbers):.1f}.",
        "var": f"The variance of {numbers} is {statistics.variance(numbers):.1f}."
    }
    
    # 统一选择要输出的内容
    output_content = stats_dict[output] if output in stats_dict else '\n'.join(stats_dict.values())
    # 仅写一次print语句
    print(output_content)

# 直接调用函数即可得到格式化输出
print_basic_statistics(91, 82, 19, 13, 44)

此方案下,无论指定单个统计项还是输出全部,都通过同一处逻辑处理打印,彻底避免了代码重复。

补充提示

原代码缺少import statistics语句,实际运行会触发报错,修改后的代码已补充该导入;使用字典存储统计结果,不仅简化了分支判断,也方便后续扩展更多统计项。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:35:27