(代码日5第1部分的出现)调试cod需要帮助吗

2024-05-13 18:15:20 发布

您现在位置:Python中文网/ 问答频道 /正文

和标题差不多。我今年要做的是《代码的出现》,我被困在第5天第1部分。 我得到了这个错误,我不明白为什么,因为我很确定我的索引没有超出范围。你知道吗

Traceback (most recent call last):   
  File "C:\Users\lawan\OneDrive\Documents\Computing\05 Advent Of Code.py", line 55, in <module>
    IntCodeComputer(program)   
  File "C:\Users\lawan\OneDrive\Documents\Computing\05 Advent Of Code.py", line 8, in IntCodeComputer
    program, count = Addition(program, count, parameters)   
  File "C:\Users\lawan\OneDrive\Documents\Computing\05 Advent Of Code.py", line 29, in Addition
    num1 = ParameterCheck(program, count, parameters, 0)   
  File "C:\Users\lawan\OneDrive\Documents\Computing\05 Advent Of Code.py", line 26, in ParameterCheck
    return program[program[count+1+x]] 
IndexError: list index out of range

我的代码是:

def IntCodeComputer(program):
    count = 0
    while True:
        instruction = program[count]
        opcode = str(instruction)[-2::1]
        parameters = str(instruction)[-3::-1]
        if opcode == "1" or opcode == "01":
            program, count = Addition(program, count, parameters)
        elif opcode == "2" or opcode == "02":
            program, count = Multiplication(program, count, parameters)
        elif opcode == "3" or opcode == "03":
            program, count = Input(program, count)
        elif opcode == "4" or opcode == "04":
            program, count = Output(program, count)
        elif opcode == "99":
            break
    #print(program)

def ParameterCheck(program, count, parameters, x):
    if len(parameters) > 1 and len(parameters) == 4:
        if parameters[x] == "0":
            return program[program[count+1+x]]
        elif parameters[x] == "1":
            return program[count+x]
    else:
         return program[program[count+1+x]]

def Addition(program, count, parameters):
    num1 = ParameterCheck(program, count, parameters, 0)
    num2 = ParameterCheck(program, count, parameters, 1)
    program[program[count+3]] = num1 + num2
    count += 4
    return program, count

def Multiplication(program, count, parameters):
    num1 = ParameterCheck(program, count, parameters, 0)
    num2 = ParameterCheck(program, count, parameters, 1)
    program[program[count+3]] = num1 * num2
    count += 4
    return program, count

def Input(program, count):
    inputValue = int(input("Input Value: "))
    program[program[count+1]] = inputValue
    count += 2
    return program, count

def Output(program, count):
    print(program[program[count+1]])
    count += 2
    return program, count

#Main
program = [3,225,1,225,6,6,1100,1,238,225,104,0,1101,86,8,225,1101,82,69,225,101,36,65,224,1001,224,-106,224,4,224,1002,223,8,223,1001,224,5,224,1,223,224,223,102,52,148,224,101,-1144,224,224,4,224,1002,223,8,223,101,1,224,224,1,224,223,223,1102,70,45,225,1002,143,48,224,1001,224,-1344,224,4,224,102,8,223,223,101,7,224,224,1,223,224,223,1101,69,75,225,1001,18,85,224,1001,224,-154,224,4,224,102,8,223,223,101,2,224,224,1,224,223,223,1101,15,59,225,1102,67,42,224,101,-2814,224,224,4,224,1002,223,8,223,101,3,224,224,1,223,224,223,1101,28,63,225,1101,45,22,225,1101,90,16,225,2,152,92,224,1001,224,-1200,224,4,224,102,8,223,223,101,7,224,224,1,223,224,223,1101,45,28,224,1001,224,-73,224,4,224,1002,223,8,223,101,7,224,224,1,224,223,223,1,14,118,224,101,-67,224,224,4,224,1002,223,8,223,1001,224,2,224,1,223,224,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,7,677,677,224,102,2,223,223,1005,224,329,1001,223,1,223,1008,226,226,224,1002,223,2,223,1005,224,344,1001,223,1,223,1107,677,226,224,1002,223,2,223,1006,224,359,1001,223,1,223,107,677,677,224,102,2,223,223,1005,224,374,101,1,223,223,1108,677,226,224,102,2,223,223,1005,224,389,1001,223,1,223,1007,677,677,224,1002,223,2,223,1005,224,404,101,1,223,223,1008,677,226,224,102,2,223,223,1005,224,419,101,1,223,223,1108,226,677,224,102,2,223,223,1006,224,434,1001,223,1,223,8,677,226,224,1002,223,2,223,1005,224,449,101,1,223,223,1008,677,677,224,1002,223,2,223,1006,224,464,1001,223,1,223,1108,226,226,224,1002,223,2,223,1005,224,479,1001,223,1,223,1007,226,677,224,102,2,223,223,1005,224,494,1001,223,1,223,1007,226,226,224,102,2,223,223,1005,224,509,101,1,223,223,107,677,226,224,1002,223,2,223,1006,224,524,1001,223,1,223,108,677,677,224,102,2,223,223,1006,224,539,101,1,223,223,7,677,226,224,102,2,223,223,1006,224,554,1001,223,1,223,1107,226,677,224,102,2,223,223,1005,224,569,101,1,223,223,108,677,226,224,1002,223,2,223,1006,224,584,101,1,223,223,108,226,226,224,102,2,223,223,1006,224,599,1001,223,1,223,1107,226,226,224,102,2,223,223,1006,224,614,1001,223,1,223,8,226,677,224,102,2,223,223,1006,224,629,1001,223,1,223,107,226,226,224,102,2,223,223,1005,224,644,101,1,223,223,8,226,226,224,102,2,223,223,1006,224,659,101,1,223,223,7,226,677,224,102,2,223,223,1005,224,674,101,1,223,223,4,223,99,226]
IntCodeComputer(program)

Tags: returndefcountonedriveprogramusersdocumentsopcode