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

请求协助:实现随机为每周日期分配动物的Python动物园日历脚本

解决动物园日历脚本:随机关联动物到一周日期的问题

看起来你已经有了不错的起步,但代码里有几个小问题,还有逻辑上的缺失导致没法完成「随机遍历周并给日期分配动物」的功能。我来帮你梳理并修正:

先说说现有代码的问题

  • 变量名错误:你定义了animallist22但调用了animallist2,运行时会报NameError
  • 重复冗余的变量:多次获取today和my_date,可以简化成一次获取
  • 缺少一周日期的生成逻辑:你只拿到了当前周的周一日期,但没有遍历生成一周的所有7天
  • 动物数量不匹配:你的动物列表只有6种,一周有7天,直接随机抽样会不够用(random.sample要求样本数量不超过列表长度)

修正后的完整代码

下面是调整后的脚本,包含详细注释,解决了上述问题,并且实现了「为当前周每一天随机分配唯一动物」的功能:

import datetime
import calendar
import random

# 1. 获取当前日期,简化变量定义
today = datetime.date.today()

# 2. 计算当前周的起始日期(周一,weekday()返回0=周一,6=周日)
start_of_week = today - datetime.timedelta(days=today.weekday())

# 3. 生成当前周的所有7个日期(周一到周日)
week_dates = [start_of_week + datetime.timedelta(days=offset) for offset in range(7)]

# 4. 动物列表:补充了一种动物来匹配一周7天(你也可以换成自己需要的动物)
animal_types = ['Dog', 'Cat', 'Parrot', 'Donkey', 'Snake', 'Fish', 'Rabbit']

# 5. 从动物列表中随机抽取7个不重复的动物
random_animal_list = random.sample(animal_types, len(animal_types))

# 6. 将日期和随机动物关联成字典,形成日历
zoo_weekly_calendar = {date: animal for date, animal in zip(week_dates, random_animal_list)}

# 7. 格式化输出结果
print("本周动物园日历:")
for date, animal in zoo_weekly_calendar.items():
    day_name = calendar.day_name[date.weekday()]
    print(f"{date.strftime('%Y-%m-%d')} ({day_name}): {animal}")

可选的调整方案

如果不想补充动物,也可以用以下方式处理6种动物对应7天的情况:

  • 允许重复动物:把第5步换成random_animal_list = [random.choice(animal_types) for _ in range(7)],这样可能会有重复的动物分配到不同日期
  • 循环填充动物:先打乱现有6种动物,再随机选一个补充,保证尽量少重复:
    shuffled_animals = random.sample(animal_types, len(animal_types))
    random_animal_list = shuffled_animals + [random.choice(animal_types)]
    

运行效果示例

输出会类似这样:

本周动物园日历:
2024-05-20 (Monday): Rabbit
2024-05-21 (Tuesday): Donkey
2024-05-22 (Wednesday): Fish
2024-05-23 (Thursday): Cat
2024-05-24 (Friday): Parrot
2024-05-25 (Saturday): Snake
2024-05-26 (Sunday): Dog

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:02:53