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

如何修改Python主函数以生成指定的食谱管理命令行输出?

问题:修改Python主函数以匹配指定命令行交互输出

目标命令行交互示例

请输入命令: ls
当前餐单暂无食谱。
请输入命令: ls -a
chocolate peanut butter banana shake
chocolate brownies
seitan
cinnamon rolls
peanut butter
omelette
请输入命令: g
请输入命令: add peanut butter
请输入命令: ls
[('peanut butter', '300 g peanuts,0.5 tsp salt,2 tsp oil')]
请输入命令: g
| 300.0 | g | peanuts |
| 0.5 | tsp | salt |
| 2.0 | tsp | oil |

当前主函数代码

while not quit_program:
        command = input("输入命令: ")
        
        if command.lower() == "h":
            print("帮助信息在此。")
        elif command.lower() == "q":
            quit_program = True
        elif command == "ls":
            if not meal_plan:
                print('当前餐单暂无食谱。')
        elif command == "rm":
            remove_function(get_ingredient_amount)
        elif command.lower() == "g":
            generate_shopping_list(recipes)
        elif command == "add":
            add_to_shopping_list(get_recipe_name, shopping_list)
        elif command == "ls -a":
            list_all_recipes()
        elif command == "ls -s":
            display_shopping_list(shopping_list)
        elif command.lower() == "mkrec":
            create_recipe()
        else:
            for recipe, ingredients in meal_plan.items():
                print(recipe)
            print("无效命令,请重试。")

if __name__ == "__main__":
    main()

需要的修改内容

1. 修正输入提示文本

将输入提示从"输入命令: "改为"请输入命令: ",匹配交互示例的格式:

command = input("请输入命令: ")

2. 完善ls命令的输出逻辑

原代码仅处理meal_plan为空的情况,需补充非空时的输出格式,同时移除else分支中错误的食谱遍历:

elif command.lower() == "ls":
    if not meal_plan:
        print('当前餐单暂无食谱。')
    else:
        # 转换为交互示例中的元组列表字符串格式
        print([(name, ingredients) for name, ingredients in meal_plan.items()])

3. 处理带参数的add命令

原代码仅匹配精确的add命令,需支持提取后续的食谱名称参数,并调整函数调用:

elif command.startswith("add "):
    # 拆分命令,获取食谱名称
    _, recipe_name = command.split(maxsplit=1)
    # 传入具体食谱名称而非函数引用
    add_to_shopping_list(recipe_name, shopping_list)
    # 确保add_to_shopping_list会将食谱及其配料存入meal_plan
    # (或在此处手动添加,取决于函数内部逻辑)

4. 调整g命令的参数与逻辑

原代码传入recipes参数,需改为传入shopping_list,同时确保generate_shopping_list函数仅在购物清单非空时输出表格格式内容:

elif command.lower() == "g":
    generate_shopping_list(shopping_list)

对应的generate_shopping_list函数需实现:

def generate_shopping_list(shopping_list):
    if not shopping_list:
        return
    for amount, unit, item in shopping_list:
        print(f"| {amount} | {unit} | {item} |")

5. 修复无效命令的处理逻辑

移除else分支中多余的食谱遍历,仅保留无效命令提示:

else:
    print("无效命令,请重试。")

6. 优化命令匹配的兼容性(可选)

为ls -a命令添加大小写兼容,避免因输入大写导致匹配失败:

elif command.lower() == "ls -a":
    list_all_recipes()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:47:44