我正在学习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))
答案 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:
...