我从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]进行解码的方式可能是错误的?
在行中
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]变量的另一个和,但由于它的定义未包含在您的代码部分中,因此我们无法对其进行详细说明。我建议也检查一下。