鱼C论坛

 找回密码
 立即注册
查看: 347|回复: 5

[已解决]随机抽人的代码怎么写

[复制链接]
发表于 2024-6-13 09:21:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想写一个随机抽人的代码,一共六个人,每次抽取不重复的一个人并记录,抽一个人后结束,下次使用继续抽取,抽取六次后重新开始。各位大佬该怎么写这种
最佳答案
2024-6-13 11:29:30
chuiyangzimo 发表于 2024-06-13 11:29
第二次抽取该怎么用,复制winner = random_pick()
pr ...


如果你想在第二次抽取时只输出一个人的结果,而不是一次性输出两个人的结果,可以对代码进行一些修改。下面是相应的代码示例:

import random

# 六个人的名单
people = ["小明", "小红", "小刚", "小李", "小美", "小张"]

# 初始化一个记录已抽取人员的集合
picked = set()

def random_pick():
    while True:
        # 如果已经抽取了全部六人,重置已抽取集合
        if len(picked) == len(people):
            picked.clear()
        
        # 随机抽取一个人
        person = random.choice(people)
        
        # 如果这个人还没被抽过,则记录并返回
        if person not in picked:
            picked.add(person)
            return person

# 第一次抽取
winner1 = random_pick()
print(f"恭喜 {winner1} 被抽中啦!")

# 第二次抽取
winner2 = random_pick()
print(f"恭喜 {winner2} 被抽中啦!")

在这段代码中,我添加了第二次抽取示例的部分。通过分别调用 `random_pick()` 函数来抽取两个人,并分别将结果存储在 `winner1` 和 `winner2` 变量中。然后,分别用两个 `print()` 语句输出每次抽取的结果。

这样,你可以在每次抽取时单独输出一个人的结果,而不是同时输出两个人的结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-13 09:27:44 | 显示全部楼层
当然可以!让我们来写一个简单的随机抽人程序,满足你的需求。
import random

# 六个人的名单
people = ["小明", "小红", "小刚", "小芳", "小强", "小美"]

# 初始化一个记录已抽取人员的集合
picked = set()

def random_pick():
    while True:
        # 如果已经抽取了全部六人,重置已抽取集合
        if len(picked) == len(people):
            picked.clear()
        
        # 随机抽取一个人
        person = random.choice(people)
        
        # 如果这个人还没被抽过,则记录并返回
        if person not in picked:
            picked.add(person)
            return person

# 示例用法:连续抽取六次
for _ in range(6):
    winner = random_pick()
    print(f"恭喜 {winner} 被抽中啦!")

# 可以多次调用 random_pick() 进行不重复抽取

这段代码的逻辑很简单:
1. 使用列表 `people` 存储六个人的名字。
2. 使用集合 `picked` 记录已经被抽取过的人。
3. 定义 `random_pick()` 函数来实现随机抽取逻辑:如果已经抽取了全部六人,则重置集合;否则,随机选择一个未被抽取过的人并记录。
4. 示例中,使用 `for` 循环连续抽取六次,并输出每次抽取的结果。

你可以根据需要随时调用 `random_pick()` 函数来进行抽取,程序会确保每次抽取的结果不重复,直到所有人都被抽取过一次后重新开始。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-13 11:23:55 | 显示全部楼层
FishC 发表于 2024-6-13 09:27
当然可以!让我们来写一个简单的随机抽人程序,满足你的需求。

如果我每次只想抽取一个人,该怎么写呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-13 11:25:53 | 显示全部楼层
chuiyangzimo 发表于 2024-06-13 11:23
如果我每次只想抽取一个人,该怎么写呢


如果你想每次只抽取一个人而不是连续抽取六次,可以简化代码逻辑,每次调用 `random_pick()` 函数即可抽取一个人。下面是针对单次抽取的代码示例:
import random

# 六个人的名单
people = ["小明", "小红", "小刚", "小美", "小强", "小亮"]

# 初始化一个记录已抽取人员的集合
picked = set()

def random_pick():
    while True:
        # 如果已经抽取了全部六人,重置已抽取集合
        if len(picked) == len(people):
            picked.clear()
        
        # 随机抽取一个人
        person = random.choice(people)
        
        # 如果这个人还没被抽过,则记录并返回
        if person not in picked:
            picked.add(person)
            return person

# 示例用法:单次抽取一个人
winner = random_pick()
print(f"恭喜 {winner} 被抽中啦!")

# 可以再次调用 random_pick() 进行下一次抽取

这段代码和之前的示例基本相同,主要的区别是移除了循环抽取六次的部分,改为单次调用 `random_pick()` 函数来抽取一个人。每次调用该函数时,会随机抽取一个未被抽过的人,并输出抽取的结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-13 11:29:18 | 显示全部楼层
FishC 发表于 2024-6-13 11:25
如果你想每次只抽取一个人而不是连续抽取六次,可以简化代码逻辑,每次调用 `random_pick()` 函数即可 ...

第二次抽取该怎么用,复制winner = random_pick()
print(f"恭喜 {winner} 被抽中啦!")时 会一次出两个人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-13 11:29:30 | 显示全部楼层    本楼为最佳答案   
chuiyangzimo 发表于 2024-06-13 11:29
第二次抽取该怎么用,复制winner = random_pick()
pr ...


如果你想在第二次抽取时只输出一个人的结果,而不是一次性输出两个人的结果,可以对代码进行一些修改。下面是相应的代码示例:

import random

# 六个人的名单
people = ["小明", "小红", "小刚", "小李", "小美", "小张"]

# 初始化一个记录已抽取人员的集合
picked = set()

def random_pick():
    while True:
        # 如果已经抽取了全部六人,重置已抽取集合
        if len(picked) == len(people):
            picked.clear()
        
        # 随机抽取一个人
        person = random.choice(people)
        
        # 如果这个人还没被抽过,则记录并返回
        if person not in picked:
            picked.add(person)
            return person

# 第一次抽取
winner1 = random_pick()
print(f"恭喜 {winner1} 被抽中啦!")

# 第二次抽取
winner2 = random_pick()
print(f"恭喜 {winner2} 被抽中啦!")

在这段代码中,我添加了第二次抽取示例的部分。通过分别调用 `random_pick()` 函数来抽取两个人,并分别将结果存储在 `winner1` 和 `winner2` 变量中。然后,分别用两个 `print()` 语句输出每次抽取的结果。

这样,你可以在每次抽取时单独输出一个人的结果,而不是同时输出两个人的结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 20:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表