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

如何使用sys模块处理多行输入,实现指定数字规则的求和程序?

解决多行输入的行分割与目标逻辑实现问题

要把每行数值存入独立列表,直接迭代sys.stdin即可——它会自动按行分割输入内容。每一行读取后,先清理空白、拆分字符串,再转成整数列表,就能实现每行数据独立存储。

结合你的需求,完整代码如下:

import sys

for line in sys.stdin:
    # 处理单行:去除首尾空白、拆分字符串、转换为整数列表
    num_list = list(map(int, line.strip().split()))
    # 统计当前行中以3结尾的元素数量
    end_with_3_count = 0
    for num in num_list:
        if num % 10 == 3:
            end_with_3_count += 1
    # 判断是否满足"偶数个以3结尾元素"的条件
    if end_with_3_count % 2 == 0 and end_with_3_count > 0:
        # 输出该行元素和并终止程序,确保只返回第一个符合条件的行
        print(sum(num_list))
        sys.exit()
# 遍历所有行后未找到符合条件的,输出-1
print(-1)

关键说明:

  • 行分割处理:sys.stdin作为可迭代对象,每次循环返回一行输入(包含换行符),strip()会移除首尾的换行、空格等空白字符,避免拆分出无效空字符串。split()默认按任意空白(空格、制表符等)拆分,适配常见的整数序列输入格式。
  • 统计逻辑:用num % 10 == 3判断非负整数是否以3结尾,这是最直接的方式——一个数的最后一位等于它对10取模的结果。
  • 终止逻辑:找到第一个符合条件的行后,立即输出和并调用sys.exit()终止程序,保证不会继续处理后续行,符合"第一个"的要求。
  • 特殊情况处理:如果需求中"偶数个"包含0个(即一行中没有以3结尾的元素也算符合条件),只需去掉判断条件里的end_with_3_count > 0即可;如果要求必须至少有2个(比如示例中的情况),则保留该条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:38