Python 为什么问题的结果在列表的位置1而不是0

Python 为什么问题的结果在列表的位置1而不是0,python,python-3.x,Python,Python 3.x,好的,我已经开始学习Python,开始做去年的代码拼图,在第2天的拼图中,我的结果将自己存储在列表的位置1,而不是拼图上所说的位置0。我得到的数字是正确的,但由于某种原因,位置不对。 有人知道为什么会这样吗 代码:Python3 f = open("input2.txt") opcode = f.read().strip('\n').split(',') opcode = [int(i) for i in opcode] opcode[1] = 12 opcode[2]

好的,我已经开始学习Python,开始做去年的代码拼图,在第2天的拼图中,我的结果将自己存储在列表的位置1,而不是拼图上所说的位置0。我得到的数字是正确的,但由于某种原因,位置不对。 有人知道为什么会这样吗

代码:Python3

f = open("input2.txt")
opcode = f.read().strip('\n').split(',')
opcode = [int(i) for i in opcode] 

opcode[1] = 12
opcode[2] = 2

for i in range(0, len(opcode), 4):
    opcodes = opcode[i]
    inputA = opcode[opcode[i+1]]
    inputB = opcode[opcode[i+2]]
    output = opcode[opcode[i+3]]

    if opcodes == 1:
        opcode[output] = inputA + inputB
    elif opcodes == 2:
        opcode[output] = inputA * inputB
    elif opcodes == 99:  
        break  
    else:
        print("Uknown opcode")

print(opcode)
第二天谜题:

输入2个文本文件编号:

1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1,1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,1,1 1 1 1 1 1,1 1 1 1 1 1 1,1 1,1 1 1,1 1 1 1 1 3 3 3 3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1,91,95,1,95,9,99,1,13,99103,2103,13107,1107,10111,2,10111115,1115,9119,2119,6123,1,5123127,1,5,127,131,1,10,131,135,1,135,6,139,1,10,139,143,1,143,6,147,2,147,13,151,1,5,151,155,1,155,5,159,1,159,2,163,1,163,9,0,99,2,14,0,0 结果:

[1469067,2,14,1,1,2,3,1,3,4,3,1,5,4,3,2,1,9,36,1,19,
5, 37, 1, 13, 23, 42, 1, 27, 6, 44, 2, 31, 6, 88, 2, 6, 35, 176, 1, 39, 5,
177, 1, 13, 43, 182, 1, 6, 47, 184, 2, 13, 51, 920, 1, 10, 55, 924, 1, 59,
5, 925, 1, 10, 63, 929, 1, 67, 5, 930, 1, 71, 10, 934, 1, 9, 75, 937, 2, 13,
79, 4685, 1, 9, 83, 4688, 2, 87, 13, 23440, 1, 10, 91, 23444, 1, 95, 9, 23447,
1, 13, 99, 23452, 2, 103, 13, 117260, 1, 107, 10, 117264, 2, 10, 111, 469056,
1, 115, 9, 469059, 2, 119, 6, 938118, 1, 5, 123, 938119, 1, 5, 127, 938120,
1, 10, 131, 938124, 1, 135, 6, 938126, 1, 10, 139, 938130, 1, 143, 6, 938132,
2, 147, 13, 4690660, 1, 5, 151, 4690661, 1, 155, 5, 4690662, 1, 159, 2,
4690664, 1, 163, 9, 0, 99, 2, 14, 0, 0]

预期结果:4690667作为列表中的第一个数字,而不是第二个。拼图显示第四个操作码操作数是存储结果的索引。 代码使用该操作数查找新值,然后在该值处存储结果。 假设你的第四个元素是=30。然后,您应该将值存储在索引30中

您的代码改为读取第4个元素(再次假设操作码[i+3]=30),然后查看 在操作码[30]的值处(假设该值为操作码[30]=20),然后将结果保存在操作码[20](在索引20处),而不是操作码[30](在索引30处)。 换句话说,您读取的操作数的值是存储结果的索引,而不是需要用于查找存储结果的索引的值

更换线路 输出=操作码[操作码[i+3]]


输出=操作码[i+3]

input2.txt中有什么?你打印出了什么,这与你期望的有什么不同?第二天的拼图是什么?用拼图链接编辑了主要帖子,我的输入文件是这个python2还是python3?您应该养成关闭文件句柄的习惯。@JaredSmith Python 3