在这种情况下随机选择不起作用?

时间:2014-03-05 21:34:00

标签: python list random choice

我正在尝试这样做,所以我从一个玩家列表中随机选择......这很简单,我知道,但我无法让它工作,我得到一些随机字母,比如“我“或”e“结果:O

以下是代码的一部分:

print "p.getName()", p.getName()
randomtarget = choice(p.getName())

p是一个玩家列表,getName是获取他们名字的函数,我成功了,所以这就是我得到的:

22:29:21 [INFO] p.getName() Brixishuge
22:29:21 [INFO] Random target: i
显然,随机目标应该是“Brixishuge”,因为它只是可能的目标,但我得到“我”的结果,为什么?我究竟做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:4)

random.choice列出了可供选择的内容。

由于你只给它一个字符串(p.getName()返回一个字符串),它正在处理字符串 作为一个字符列表,它从中选择一个字符(在你的情况下为'i')。

你可能意味着这个:

randomtarget = choice([p.getName()])

您可以通过在方括号中放置内容或调用列表函数来制作列表。

l = [p.getName()]
l = list(p.getName())

进一步阅读,它表明p不是一个玩家列表而是一个单一玩家。

如果你想要随机播放器的名字,你应该试试这个:

player = choice(list_of_players)
name = player.getName()

答案 1 :(得分:2)

您选择的输入必须是一个列表,以便您返回该列表的其中一个元素。在这里你输入一个字符串,以便选择将返回该字符串的一个字符。

import random
p = ['Brixishuge', 'user2971511', 'sabbahillel']
random.choice(p)

如果您的输入是['Brixishuge'],它将以您期望的方式工作。

Python Number choice() Method

  

描述方法choice()从列表中返回一个随机项,   元组或字符串。

     

语法以下是choice()方法的语法:

     

choice(seq)注意:这个函数不能直接访问,所以我们   需要导入随机模块然后我们需要调用这个函数   使用随机静态对象。

     

参数seq - 这可以是列表,元组或字符串......

     

返回值此方法返回一个随机项。