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

Python代码计算结果异常求助:预期输出7却得到5

代码错误排查:数组拆分排序求和结果不符

问题背景

设定数组大小为5,输入数字依次为3、4、1、7、9,需求如下:

  • 按索引奇偶将数组拆分为Odd(奇数索引元素)和Even(偶数索引元素)两个列表
  • 分别对两个列表进行排序
  • 取两个列表的倒数第二个元素相加,预期结果为7,但运行代码后得到5

错误代码

n = []
odd = []
even = []
nsize = 5
for i in range(0, nsize):
    num = int(input("Enter number: "))
    n.append(num)
    if i % 2 == 0:
        even.append(n[i])
    else:
        odd.append(n[i])

print("odd", sorted(odd))
print("even", sorted(even))
print(odd[-2] + even[-2])

错误分析与修正

核心错误:排序结果未实际赋值

代码中仅在print语句里调用了sorted()函数,但sorted()是返回新的排序列表,不会修改原列表。计算求和时使用的是未排序的原始odd和even列表:

  • 原始odd列表(奇数索引元素):[4,7],未排序时odd[-2] = 4
  • 原始even列表(偶数索引元素):[3,1,9],未排序时even[-2] = 1
  • 4+1=5,这就是得到错误结果的原因

索引拆分逻辑验证

代码中索引判断逻辑是正确的:

  • 索引i%2==0对应偶数索引(0、2、4),元素为3、1、9,加入even列表
  • 索引i%2!=0对应奇数索引(1、3),元素为4、7,加入odd列表

修正后的代码

将排序后的结果重新赋值给变量,再进行求和:

n = []
odd = []
even = []
nsize = 5
for i in range(0, nsize):
    num = int(input("Enter number: "))
    n.append(num)
    if i % 2 == 0:
        even.append(n[i])
    else:
        odd.append(n[i])

# 排序并保存结果
odd_sorted = sorted(odd)
even_sorted = sorted(even)
print("odd", odd_sorted)
print("even", even_sorted)
# 取排序后列表的倒数第二个元素相加
print(odd_sorted[-2] + even_sorted[-2])

结果验证

  • 排序后odd_sorted = [4,7],倒数第二个元素为4
  • 排序后even_sorted = [1,3,9],倒数第二个元素为3
  • 4+3=7,符合预期结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:31:09