所以我是个新手,想尝试做一个在线赌场。 random.choice[True,False..]有效,但我需要一些带有概率的东西,所以我使用了带有权重的random.choices作为prob,但它不会在程序的下一阶段使用它来检查if,elif..,它只是移动到的“您想查看存款吗”阶段。为什么它会跳过整个部分当我使用random.choice时,它不起作用
import random
result = random.choices([True,False,'Idk'], weights = (70,20,10), k=2)
gamble1 = int(input('Enter your lucky number: '))
if result == True:
print('You won 50$!')
elif result == False:
print('You won 100$!')
elif result == 'Idk':
print('You won 500$!')
answer = input('Would you like to see your winnings deposit(YES/NO): ')
if answer == ('yes'):
print(mywin)
elif answer == ('no'):
print('Alright!')
answer2 = input('Would you like to play again?(YES/NO): ')
if answer2 == ('yes'):
pass
elif answer2 == ('no'):
print('Thanks for playing!')
您的代码遇到的问题是,您试图将
bool
与list
进行比较在这一行中,您将变量
result
设置为一个包含两个条目的列表result = random.choices([True,False,'Idk'], weights = (70,20,10), k=2)
因此,在一个列表中获得两个伪随机值,然后尝试将整个列表与
bool
进行比较if result == True:
因此,当代码执行时,
result
可能看起来像['Idk', True]
,并且您定义的每个条件都失败['Idk', True]
不等于True
,不等于False
,也不等于'Idk'
正如其他人的评论所提到的,您可以通过将条件语句改为
if result[0]
而不是if result
来解决这个问题如果您应用该修复程序,您将得到如下输出
不过,定义
mywin
并不难。我只想在定义gamble1
和answer
之间重新编写一节,如下所示当您运行代码时,现在应该是这样的
weights
的正确值为(0.7, 0.2, 0.1)
,k
表示在列表类型中得到的总输出。因此,即使k
等于1(默认情况下),它仍然以列表的形式返回输出只需添加一个索引,因为
choices
返回一个列表自己检测这些东西的一个有用方法是尝试打印出
result
,这样就可以看到变量实际包含的内容相关问题 更多 >
编程相关推荐