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

Python随机生成每周餐单代码问题:每日重复同一菜品需修复

修复方案:为一周七天随机分配不同餐食并写入Excel

原代码问题分析

原代码的嵌套循环逻辑完全错误:

  • 外层循环遍历每一道菜品,内层循环把当前菜品重复赋值给七天,导致每天都是同一道菜
  • 遍历完所有菜品后,会重复输出多组“七天同菜”的结果,完全不符合“每日随机不同餐食”的需求

修复后的代码

import pandas as pd
import random

def main():
    # 读取菜品数据
    db = pd.read_excel("meals.xlsx")
    meals_list = db["meals"].tolist()
    week_days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
    
    # 检查菜品数量是否足够分配七天不重复的餐食
    if len(meals_list) < len(week_days):
        print("警告:菜品数量不足7道,将出现重复餐食")
        # 数量不足时允许重复随机选择
        selected_meals = [random.choice(meals_list) for _ in week_days]
    else:
        # 随机选择7道不重复的菜品
        selected_meals = random.sample(meals_list, len(week_days))
    
    # 构建每日餐食对应关系
    weekly_meals = dict(zip(week_days, selected_meals))
    
    # 打印每日餐食结果
    for day, meal in weekly_meals.items():
        print(f"{day}: {meal}")
    
    # 写入Excel文件用于采购
    df = pd.DataFrame.from_dict(weekly_meals, orient="index", columns=["meal"])
    df.to_excel("weekly_shopping_list.xlsx")

if __name__ == "__main__":
    main()

关键修复点说明

  • 随机选菜逻辑:用random.sample()从菜品列表选取7个不重复样本(菜品数量≥7时),确保每日餐食不同;若菜品不足7道,退用random.choice()生成允许重复的列表并给出警告
  • 数据结构优化:通过zip()将星期列表与选中菜品配对成字典,清晰对应每日餐食
  • Excel写入:把字典转换为DataFrame,直接写入新Excel文件,方便采购使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:25:22