debugging 尝试...除了是错误的

yx2lnoni  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(119)

我正在开发一个测试函数的函数,我发现y try except根本就错了......事实上,当我尝试测试一个排序函数(通过选择的函数)时,它返回的结果是索引超出了范围,而当我用同一个列表单独尝试该函数时,情况就不是这样了......
代码如下:

def verifyList(L: list) -> bool:
    for elm in range(len(L)):
        if L[elm] > L[elm + 1]:
            return False
        #
    return True

def tri_selection(L: list) -> list:
    """
    Recupere un element et l'échange avec le un plus grand
    """
    assert type(L) == list
    
    for i in range(len(L)):
        for j in range(len(L)):
            if L[i] <= L[j]:
                L[j], L[i] = L[i], L[j]
            #
        #
    #
    return L

其他没有编写的函数,因为它是不必要的...

def __test__(L: list) -> str:
    assert type(L) == list

    functionsToTry = [tri_selection]

    for function in functionsToTry:
        try:
            if verifyList(function(L)) == True:
                print('[✓] ' + str(function.__name__) + ' : worked successfuly')
            else:
                print('[≃] ' + str(function.__name__) + ' : do not worked successfuly')
                continue
        except Exception as error:
            print('[✕] ' + str(function.__name__) + ' : ' + str(error))
        else:
            print(function(L))
__test__([3, 2, 1])

如果你有什么想法我很乐意知道,
谢谢

mkshixfv

mkshixfv1#

elm == len(L) - 1时,if L[elm] > L[elm + 1]:会产生清单索引超出范围错误。最简单的修正方法是将verifyList变更为:

def verifyList(L: list) -> bool:
    return L == sorted(L)

通过此更改,您的函数通过了测试。

相关问题