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

Python中for循环处理列表为何遗漏最后一项?代码问题排查

问题分析

你的代码存在两个核心问题:

  • 字符串比较而非数值比较:split()得到的是字符串列表,直接用min()比较字符串会按字符ASCII值判断,比如'100'和'15'比较时,因为第二个字符'0' < '5',所以min()返回'100',而非预期的15。
  • 输入读取不完整:input()仅能读取一行内容,如果你分多行输入数字(如示例中的换行输入),程序只会获取第一行的3,后续行的数字不会被纳入处理。
修正后的代码
class Solution:
    def __init__(self):
        # 读取所有输入行,合并为一个列表
        import sys
        lines = sys.stdin.read().split()
        # 将所有字符串转换为整数
        self.num_list = list(map(int, lines))

    def min_of_two(self):
        result = []
        # 取出对数n
        n = self.num_list.pop(0)
        # 循环n次,每次取一对数字
        for i in range(n):
            # 每次取列表前两个元素
            a = self.num_list.pop(0)
            b = self.num_list.pop(0)
            result.append(str(min(a, b)))
        # 用空格连接结果,避免末尾多余空格
        return ' '.join(result)

x = Solution()
print(x.min_of_two())
代码说明
  1. 读取所有输入:使用sys.stdin.read()读取所有输入内容(包括多行),再分割为列表,解决多行输入的问题。
  2. 转换为整数:用map(int, lines)将所有字符串元素转为整数,确保数值比较的正确性。
  3. 优化循环逻辑:先取出对数n,循环n次每次取前两个元素,避免索引计算错误,同时用列表收集结果最后用join拼接,避免末尾出现多余空格。
测试输入与输出

输入:

3
5 3
2 8
100 15

输出:

3 2 15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:10:48