You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用random.choice正常但带概率权重的random.choices未触发if判断如何解决

问题原因
  • 核心问题在于random.choices()和random.choice()的返回值类型存在差异:
    • random.choice()返回的是传入序列中的单个元素,可以直接和True/False/'Idk'做等值判断,因此之前的逻辑可以正常触发
    • random.choices()无论参数k设置为多少,返回值都是包含对应数量结果的列表,你的代码里设置了k=2,所以result得到的是类似[True, False]的列表,自然和所有判断条件都不匹配,导致所有分支直接跳过。
修复方案
  1. 如果只需要生成1个随机结果,把k值改为1,并且取返回列表的第一个元素即可,修改对应代码为:
# 取返回列表的第一个元素,得到单个判断值
result = random.choices([True,False,'Idk'], weights = (70,20,10), k=1)[0]
  1. 如果确实需要生成2个随机结果(对应你设置的k=2),则需要分别判断每个元素的结果,示例如下:
result_list = random.choices([True,False,'Idk'], weights = (70,20,10), k=2)
for res in result_list:
    if res == True:
        print('You won 50$!')
    elif res == False:
        print('You won 100$!')
    elif res == 'Idk':
        print('You won 500$!')
其他潜在问题

你代码中打印存款时调用的mywin变量没有提前定义,运行到对应分支会直接报错,需要提前根据中奖结果给mywin赋值。

内容的提问来源于stack exchange,提问作者Jovan0000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:27:05