每次按键如何获得随机物品?

时间:2019-01-02 17:08:44

标签: python-3.x

每次按键时,我的程序应从列表中获取一个随机名称,然后从列表中删除该名称。有了代码,我现在选择了一个随机名称,但是列表完全清空了。

我已经尝试了forwhile循环,但是在这种情况下我不确定该使用什么。

x = win.getKey()
while len(members) > 0:
    if x:
        name = random.choice(members)
        members.remove(name)

如上所述,我想绘制一个随机名称,并在每次按键时从列表中删除该名称,直到列表为空。

1 个答案:

答案 0 :(得分:2)

您需要将按键提示放入循环中,以使循环暂停并等待每个元素的输入,否则循环将运行至完成并立即清空整个列表。

import random

members = [1,2,3,4,5,6,7,8,9]

while members:
    if win.getKey():
        choice = random.choice(members)
        members.remove(choice)
        print(choice)

输出:

8
4
2
3
7
6
9
5
1

如果列表很大,remove是一种缓慢的线性运算,需要逐一检查列表中的每个元素以找到匹配项。考虑使用快速(摊销)恒定时间pop操作,该操作使用索引来查找目标元素而不进行搜索:

import random

members = [1,2,3,4,5,6,7,8,9]

while members:
    if win.getKey():
        choice = members.pop(random.randint(0, len(members) - 1))
        print(choice)