随机生成赢家

2024-09-29 01:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难弄明白为什么会这样

到目前为止,我所做的是生成5个随机数为1-20的组。例如,第1组可能有1,16,19;第2组可能有2,6,10,11,15个;诸如此类。我想做的是通过生成一个1-20的随机数来选择一个获胜者,然后我想去掉这组获胜的数字,然后选择另一个随机数作为第二名

一切都很顺利,除非第5组获胜,否则这些数字不会从列表中删除。我是python的初学者,所以我正在努力理解这一点。以下是代码片段:

Winners_List = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)

Winning_Number = random.sample(Winners_List, 1)

Winning_Horse = []


for i in Winning_Number:
    if i in Horse1:
        Winning_Horse = Horse1
    elif i in Horse2:
        Winning_Horse = Horse2
    elif i in Horse3:
        Winning_Horse = Horse3
    elif i in Horse4:
        Winning_Horse = Horse4
    else:
        Winning_Horse = Horse5

Second_Place_List = [i for i in Winners_List if i not in Winning_Horse]

Second_Place_List正在生成正确的列表,除非Winning_Horse=Horse5

有什么原因吗


Tags: innumber列表forif数字listelif
2条回答

您的代码存在一些问题,中奖号码是一个只有一个值的列表,因此,for循环不是更好的方法

我的建议是:

winners_list = (
  1, 2, 3, 4, 5, 6,
  7, 8, 9, 10, 11,
  12, 13, 14, 15,
  16, 17, 18, 19, 20,
)
arrival_order = random.sample(winners_list, len(winners_list))
winner = arrival_order[0]
second_place_list = arrival_order[1:]

到达订单将从获奖者列表中收到一个随机值列表,如下所示:

[20, 12, 3, 17, 18, 13, 1, 19, 9, 8, 10, 16, 6, 2, 11, 5, 15, 4, 14, 7]

可变值:

获胜者:20

第二名名单:[12,3,17,18,13,1,19,9,8,10,16,6,2,11,5,15,4,14,7]

这有用吗

Winners_List = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

Winning_Number = random.sample(Winners_List, 1)

for i in Winning_Number:
    if i in Horse1:
        Winning_Horse = Horse1
    elif i in Horse2:
        Winning_Horse = Horse2
    elif i in Horse3:
        Winning_Horse = Horse3
    elif i in Horse4:
        Winning_Horse = Horse4
    else:
        Winning_Horse = Horse5
        
# I remove the Winning_Number from the Winners_List
Winners_List.pop(Winners_List.index(Winning_Number))
# Now Winners_List is the Second_Place_List

相关问题 更多 >