You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写菜单配料判断函数输出正确但测试失败如何解决

问题产生原因
  • 函数没有显式返回值,仅执行了打印操作。Python中未声明return的函数默认返回None,你在控制台看到的True是函数内部打印的内容,不是函数返回给调用方的结果。None和预期结果True判定不相等,所以会触发Failure输出。
  • 你给函数标注的第一个入参类型是str,但测试代码传入的test_menu是嵌套列表结构,直接用in判断字符串是否存在于嵌套列表中,逻辑本身也会出错。
  • 额外问题:你使用了Python内置类型名str作为参数名,会覆盖内置对象,属于错误的编码实践。
修复方案

根据你的需求可以选择两种修复路径:

路径1:适配现有测试用例的嵌套列表结构

修改函数逻辑,先拉平嵌套列表再做存在性判断,同时把打印改为返回布尔值:

def free_from(test_menu: list, ingredient: str):
    # 拉平嵌套列表得到所有配料的集合
    all_ingredients = {item for sublist in test_menu for item in sublist}
    return ingredient not in all_ingredients

现有测试代码无需修改,运行后会直接输出Working。

路径2:保持原设计的字符串入参要求,修改测试用例

如果你的业务确实是接收字符串类型的菜单,调整测试用例的入参即可:

修复后的函数:

def free_from(test_menu: str, ingredient: str):
    return ingredient not in test_menu

修改后的测试代码:

test_menu = "potato cheese apple"
expected_result = True
if free_from(test_menu, 'water') == expected_result:
    print('Working')
else:
    print('Failure')

内容的提问来源于stack exchange,提问作者user17204797

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:18:04