如何修复'TypeError:%d格式:需要数字,而不是NoneType'错误

时间:2019-01-04 16:39:38

标签: python

我正在学习Python,但是我正在使用3.x,本练习是2.x。我已经解决了一些错误,但是这个错误让我很困惑。

我搜索了各种论坛,但无法弄清楚。

def activity03test():
    tests = [[[1,2,3,4] , 2] , [[1,3,5,7] , 0] , [[2,4,6,9] , 3] , [[1,2,6,7] , 2]]
    print ("\nStarting Test 3...")
    for i in tests:
        return_value = activity03(i[0])
        if return_value != i[1]:
            print ("Failed: Input: %s\nExpected: %d\nReceived: %d" % (str(i[0]), i[1], return_value))
            return -1
        else:
            print ("Correct:\t%s\t=\t%d" % (str(i[0]), return_value))
    return 0

此行中发生错误:

print ("Failed: Input: %s\nExpected: %d\nReceived: %d" % (str(i[0]), i[1], return_value))

1 个答案:

答案 0 :(得分:0)

似乎函数 activity03 返回 None
您的代码失败,因为%d是数字的占位符,并且不接受NoneType。
为了解决此问题,您可以使用 format 函数填充您的字符串。

检查以下代码:

print("Failed: Input: {}\nExpected: {}\nReceived: {}".format(str(i[0]), i[1], return_value))

否则,如果要保持字符串格式不变,则可以在上面的if语句中添加条件,如下所示:

for i in tests:
    return_value = activity03(i[0])
    if return_value != i[1] and return_value is not None:
        print ("Failed: Input: %s\nExpected: %d\nReceived: %d" % (str(i[0]), i[1], return_value))
        return -1
    else:
        ...