-1

Squish で Python コードを書きました。これは、エラーが次のように表示されているコードの一部です: これはどういう意味ですか?

配列 = [["1,6", "3,0", "7,0", 'null', True,]]

(列終了 - 列開始) = 10

for ループの開始

for r in range(len(array)):
        waitForObjectItem(object_id, str(r + rowStart) + "/" + str(columnStart))
        clickItem(waitForObject(object_id), str(r + rowStart) + "/" + str(columnStart), 0, 0, 0, Qt.LeftButton);

        for c in range(columnEnd - columnStart)
            # Getting an error at this point , if loop
            if array[r][c] != 'null':
                print "array index is : {}".format(array[r][c])
                print "row is {}".format(r)
                print "column is {}".format(c)
                dataType = array[r][c].__class__
                print "dataType is {}".format(dataType)
                checkState = item_checks(object_id, r + rowStart, c + columnStart).checkState;               
                print "checkstate is {}".format(checkState)
                if (dataType == str and (checkState == "uncheckable" or checkState == "unknown")):
                    waitForObjectItem(object_id, str(r + rowStart) + "/" + str(c + columnStart))
                    doubleClickItem(waitForObject(object_id), str(r + rowStart) + "/" + str(c + columnStart), 1, 1, 0, Qt.LeftButton)
                    widget = "{type='QWidget' unnamed='1' container='" + object_id + "'}";
                    txt = array[r][c]
                    txtString = str(txt)
                    type(waitForObject(widget), "<DEL>")
                    type(waitForObject(widget), str(array[r][c]))
                    try:
                          type(waitForObject(widget), str("<TAB>"))
                    except Exception(err):
                        raise Exception ("Error is found :- {}".format(err))
                elif ((array[r][c] == True or array[r][c] == False) and (checkState != "uncheckable" and checkState != "unknown")):
                    print "data type boolean loop"
                    waitForObjectItem(object_id, str(r + rowStart) + "/" + str(c + columnStart))
                    if (array[r][c] != (item_checks(object_id, r + rowStart, c + columnStart).checkState == "checked")):
                        rowHeight = waitForObject(object_id).rowHeight(r + rowStart)
                        clickItem(waitForObject(object_id), str(r + rowStart) + "/" + str(c + columnStart), 10, rowHeight / 2, 0, Qt.LeftButton)
                        
                else:
                    raise Exception(object_id + ": dataType '" + str(dataType) + "' doesen't match to expected one of cell or is unknown or unhandled")
4

1 に答える 1

1

あなたの「配列」には、最初の位置に5つのエントリしかありません。

しかし、あなた(columnEnd - columnStart)は 10 でcあるため、範囲は 0 から 9 であり、(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) です。したがって、c5 に達すると、配列のインデックス 5 にエントリがなくなり、「リスト インデックスが範囲外です」というエラーが発生します。

5の場合(columnEnd - columnStart)、それは機能します。

配列全体をループしたい場合は、array[r]使用できます

for c in range(len(array[r])):
    if(array[r][c] ...):

c配列の長さの範囲内にあり、配列の長さが異なる場合があることを確認します。

于 2016-04-28T07:18:31.250 に答える