You need to enable JavaScript to run this app. 将查找生日相同人员的Python代码中while循环改写为for循环的问题
优惠活动
大模型
产品
解决方案
定价
更多

将查找生日相同人员的Python代码中while循环改写为for循环的问题

实现方案

根据鸽巢原理,最多抽取366人必然会出现生日重复的情况,因此可以固定for循环的遍历范围,实现代码如下:

优化版本(用set提升查询效率)

import random

def findSameBDay():
    birthdays = set()
    # 遍历范围1~366覆盖所有可能的场景
    for count in range(1, 367):
        birthday = random.randint(1, 365)
        if birthday in birthdays:
            return count
        birthdays.add(birthday)
    return 366

与原实现逻辑完全对齐版本(用list存储生日)

import random

def findSameBDay():
    birthdays = []
    for count in range(1, 367):
        birthday = random.randint(1, 365)
        if birthday in birthdays:
            return count
        birthdays.append(birthday)
    return 366

逻辑说明

  • 两段代码的运行结果和原while实现完全等价,返回值都是首次出现重复生日时的总人数
  • 用set存储生日的版本查询复杂度为O(1),比列表版本的O(n)性能更高,适合高频调用场景
  • for循环的上限设为366完全符合逻辑,理论上不会走到最后的默认返回语句,仅作为语法补全保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 19:57:00