我正在尝试这样做,所以我从一个玩家列表中随机选择......这很简单,我知道,但我无法让它工作,我得到一些随机字母,比如“我“或”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”,因为它只是可能的目标,但我得到“我”的结果,为什么?我究竟做错了什么?
提前致谢!
答案 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'],它将以您期望的方式工作。
描述方法choice()从列表中返回一个随机项, 元组或字符串。
语法以下是choice()方法的语法:
choice(seq)注意:这个函数不能直接访问,所以我们 需要导入随机模块然后我们需要调用这个函数 使用随机静态对象。
参数seq - 这可以是列表,元组或字符串......
返回值此方法返回一个随机项。