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

Python中使用for循环与条件筛选时出现Index out of range错误

问题原因分析

你的错误根源在于输入无效值时的列表操作逻辑错误:

  • 当输入≤0的值时,你先把这个无效值添加到了Current列表,接着又在else块里追加了一个新输入值,导致Current的长度会超过6,而循环是固定执行6次,最终Current会存在多余元素。
  • 只有输入有效值时才会往Power里添加元素,出现无效输入时Power的长度不会对应增长。后续循环中x持续递增,但Power的长度跟不上x的索引,比如第一次输入无效值后Power为空,第二次循环x=1时,尝试访问Power[1]就会触发索引越界错误。
解决思路

核心是确保每次循环都能获取到有效的正数电流值,再添加到列表并计算功率,而非先添加无效值再补加。可以用while循环重复获取输入,直到满足条件为止。

修正后的代码
Resistance = [12, 16, 27, 39, 56, 81]
Current = []
Power = []

print("Enter 6 positive values for current:")
for x in range(6):
    # 循环获取输入,直到得到正数
    while True:
        current_val = float(input())  # 用float替代eval更安全,避免执行恶意代码
        if current_val > 0:
            break
        print("Positive values only. Enter again:")
    # 确认有效值后再添加到列表
    Current.append(current_val)
    # 计算对应功率并添加到Power列表
    power_val = current_val ** 2 * Resistance[x]
    Power.append(power_val)

print(Resistance)
print(Current)
print(Power)
关键改动说明
  • 用while True循环包裹输入逻辑,直到用户输入正数才退出循环,避免无效值进入Current列表。
  • 替换eval(input())为float(input()),eval存在安全风险(比如用户输入恶意代码),用float更适合处理数值类输入。
  • 只有得到有效值后,才执行添加到Current和计算功率的操作,保证Current和Power的长度始终与循环次数一致,不会出现索引偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39