Python中如何将random.choices()返回值转为int?板球游戏开发报错求助
解决
random.choices()返回列表导致的TypeError问题 嘿,这个问题我之前也碰到过!先给你理清楚原因:
random.choices()函数的返回值是列表类型,哪怕你只选一个元素,它也会返回类似[1]这样的列表,而不是单个整数。所以当你尝试把这个列表和玩家分数(int类型)相加时,Python就会抛出TypeError,因为它不知道怎么把列表和整数相加。
给你两个简单的解决方案:
方案1:提取列表的第一个元素(适配权重场景)
既然choices返回的是包含单个元素的列表,直接取索引[0]就能拿到你需要的整数,完美适配你需要权重的板球游戏场景:
import random a_list = [1,2] dist = [0.9,0.1] random_number = random.choices(a_list, dist)[0] # 取列表第一个元素 print(random_number) # 现在输出是int类型,比如1或2 # 之后就可以正常和分数相加了 player_score = 10 player_score += random_number
方案2:改用random.choice()(无权重场景)
如果你不需要设置权重(也就是每个元素被选中的概率相同),可以直接用random.choice(),它会直接返回单个元素,不用处理列表:
import random a_list = [1,2] random_number = random.choice(a_list) # 直接返回int print(random_number)
不过要注意,random.choice()不支持权重参数,所以如果你需要保留dist这个权重设置,方案1是更适合你的选择。
内容的提问来源于stack exchange,提问作者Python3-Pyro
相关产品推荐
相关产品推荐

