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

Python两数求和代码遇IndexError问题求助(Windows环境)

问题:Spyder中运行Python两数求和代码报IndexError: list index out of range错误

我编写了一段实现两数求和的Python代码,但在Spyder(Windows系统)中运行时,a = int(tokens[0])处始终报IndexError: list index out of range错误。

import sys

input_ = sys.stdin.read()
tokens = input_.split()

a = int(tokens[0])
b = int(tokens[1])

print(a+b)

下方另一段代码可正常运行:

def sum_of_two_digits(first_digit, second_digit):
    return first_digit + second_digit


if __name__ == '__main__':
    a, b = map(int, input().split())
    print(sum_of_two_digits(a, b))

我看到有人在Linux环境中运行第一段代码是正常的,想请教该问题的原因。


原因分析

核心差异在于不同环境下sys.stdin.read()的输入处理逻辑:

  • 在Linux终端中,用户输入两个数后,通过Ctrl+D发送EOF(文件结束符),sys.stdin.read()会读取所有输入内容,分割后得到包含两个数字的tokens列表,自然能正常访问索引0和1。
  • 但在Windows的Spyder交互环境中,直接运行脚本时,sys.stdin.read()会一直等待EOF,但Spyder控制台默认不会自动触发这个信号。如果用户没有手动输入内容并触发EOF(Windows下需按Ctrl+Z再回车),input_会是空字符串,tokens就成了空列表,访问tokens[0]必然触发索引越界错误。

而第二段代码使用input().split()能正常运行,是因为input()只读取一行输入,Spyder控制台会等待用户输入一行内容后按回车,此时能获取到有效输入并分割为两个数字的tokens,不会出现空列表的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:40:27