向列表存储值时触发列表索引越界错误,求技术解决方案
问题排查与修复
错误原因
你的代码触发IndexError: list index out of range的核心问题:
- 初始时
factor是空列表,当第一个符合条件的i出现时(比如i=1),你执行factor[i](即factor[1]),但空列表没有任何可用索引,直接触发报错。 - 代码逻辑完全搞反:你需要把符合条件的
i存入列表,而非从列表取值赋值给i。
修正后的代码
factor = [] number = int(input("what is the number?")) # 调整range范围,确保包含number本身(因数包含自身) for i in range(1, number + 1): remainder = number % i if remainder == 0: # 用append将i添加到列表末尾,这是向列表存值的正确方式 factor.append(i) # 打印当前找到的因数,或直接打印列表最后一个元素 print(i) # 可选:打印完整的因数列表 print("所有因数:", factor)
关键修改点
- 替换错误的
i= factor[i]为factor.append(i):append()是Python列表添加元素的标准方法,会自动把元素追加到列表末尾,无需手动处理索引。 - 调整
range(1, number)为range(1, number + 1):原代码的range范围会漏掉number本身(比如输入6时,只会遍历1-5),而一个数的因数必然包含自身,所以要修正范围。 - 打印逻辑简化:直接打印当前的
i即可,避免再次触发索引越界问题。
内容的提问来源于stack exchange,提问作者Olivia Blanchett
相关产品推荐
相关产品推荐

