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

如何修改Python求和函数使其支持接收输入列表计算合法数值和

方案1:交互式输入列表(运行时手动传入)

这种方式适合每次运行脚本时手动输入要计算的列表内容,修改后代码如下:

def number_sum(lst):
    total = 0
    for e in lst:
        # 这里优化了类型判断,同时排除布尔值(避免True/False被误算为1/0)
        # 如果不需要排除布尔值,或者要保留原类型判断逻辑,可以换回你原来的type判断写法
        if isinstance(e, (int, float, complex)) and not isinstance(e, bool):
            total += e
    return total

if __name__ == "__main__":
    import ast
    input_content = input("请输入要计算的列表(多个列表用英文分号分隔):").strip()
    lst_str_list = input_content.split(';')
    for idx, lst_str in enumerate(lst_str_list):
        if not lst_str:
            continue
        try:
            target_lst = ast.literal_eval(lst_str.strip())
            if not isinstance(target_lst, list):
                print(f"第{idx+1}个输入不是合法列表,已跳过")
                continue
            print(f"第{idx+1}个列表计算结果:{number_sum(target_lst)}")
        except (SyntaxError, ValueError):
            print(f"第{idx+1}个列表格式错误,已跳过")

运行时直接输入比如[1, 3, 5, 7, 9];["abc", [3, 5], 3.5, 2+3j, 4.5, 10];[],就会输出对应三个列表的计算结果。

方案2:命令行传参调用(脚本运行时直接传入参数)

适合在终端调用脚本时直接把列表作为参数传入,不需要后续手动输入,代码如下:

def number_sum(lst):
    total = 0
    for e in lst:
        if isinstance(e, (int, float, complex)) and not isinstance(e, bool):
            total += e
    return total

if __name__ == "__main__":
    import sys, ast
    # 命令行传入的参数从索引1开始取,每个参数对应一个列表
    for idx, lst_str in enumerate(sys.argv[1:]):
        try:
            target_lst = ast.literal_eval(lst_str.strip())
            if not isinstance(target_lst, list):
                print(f"第{idx+1}个参数不是合法列表,已跳过")
                continue
            print(f"第{idx+1}个列表计算结果:{number_sum(target_lst)}")
        except (SyntaxError, ValueError):
            print(f"第{idx+1}个列表格式错误,已跳过")

终端调用示例(把your_script_name.py替换成你自己的脚本文件名):

python your_script_name.py "[1, 3, 5, 7, 9]" '["abc", [3, 5], 3.5, 2+3j, 4.5, 10]' "[]"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:57:00