Python实现fill_count_matrix遇AssertionError测试失败求解
问题根因
你的计数逻辑完全正确,生成的矩阵数值符合需求,报错的核心原因是自动化测试期望该函数没有返回值(即返回None),而你当前的代码最后显式返回了修改后的DataFrame对象,所以触发了AssertionError。
pandas的DataFrame属于可变对象,你在函数内部通过c_matrix.loc做的赋值修改,会直接作用到传入的原始空矩阵对象上,不需要通过返回值传递修改结果,这也是测试要求返回None的设计依据。
解决方法
删除函数末尾的return c_matrix语句即可,修改后的代码如下:
def fill_count_matrix(c_matrix, p_matrix): ''' 填充计数矩阵:对角线统计对应商品的购买客户数,非对角线统计同时购买两个商品的客户数 ''' for i, (key, val) in enumerate(p_matrix.items()): for row in c_matrix.index: for col in c_matrix.columns: if row in val and col in val: c_matrix.loc[row,col] += 1
修改后运行测试就不会再触发返回值的断言错误了。
内容的提问来源于stack exchange,提问作者Calvin Smith
相关产品推荐
相关产品推荐

