无法解析+的不支持的操作数类型:'int'和'list'

问题描述 投票:0回答:1

我从testcase()中以以下方式对此函数pretest()进行了调用:

def testcase():
    try:
        for i_num in range(1,3):
            calculated_val = PRE_SETS[i_num]
            pretest(control, i_phase, log, calculated_val[0])

def pretest(control, i_phase, log, calculated_val):
    details = hardwarecommand()
    monitor_vals += details[3+calculated_val]
    print(monitor_vals)

def hardwarecommand():
    response = self.sendrcv(defines.CMD_HW1])
    items = response.split(",")
    data = items[:defines.INDEX_TWENTY]
    return data

定义的变量值为:

PRE_SETS = [
    [defines.ID2],
    [defines.ID1],
    [defines.ID2, defines.ID2],
    [],
    [],
]

在文件Defines.py中

ID1 = 0
ID2 = 1
ID3 = 2
CMD_HW1 = "@fetchshutter"
INDEX_TWENTY = 20

当我尝试运行程序时,在def测试用例中调用函数pretest()时,出现以下异常:

+不支持的操作数类型:'int'和'list'

有人可以让我知道如何解决此错误吗?我认为我对calculated_val [0]进行解码的方式可能是错误的?

python string list int string-formatting
1个回答
0
投票

在行中

monitor_vals += details[3+calculated_val]

您正在执行总和

3+calculated_val

3确定是整数。 calculated_val来自第四个preset参数,其调用方式如下:

pretest(control, i_phase, log, calculated_val[0])

由于calculated_val = PRE_SETS[i_num]calculated_val[0]是[[0 [is列表的第一个元素,即使它仅包含一个元素

PRE_SETS
Note
:您提供的代码中还有[.C0]变量的另一个和,但由于它的定义未包含在您的代码部分中,因此我们无法对其进行详细说明。我建议也检查一下。
© www.soinside.com 2019 - 2024. All rights reserved.