如何修改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
相关产品推荐
相关产品推荐

