我仍然深入研究Python中的Blackjack游戏,我的目标是让计算机“扭曲”。 (拿另一张卡片),直到总值大于15.从那时起我想要它,以便随着卡片总数的增加,计算机拿另一张卡片的机会变小,就像人类一样(冒风险,如果数字不太大。在计算机处理了两个值后出现以下代码。
if (computerCardValueTotal < 15):
print ("The computer has decided to twist")
ranCompCard3 = random.choice(availableCards)
computerCardValueTotal = ranCompCard + ranCompCard2 + ranCompCard3
if (computerCardValueTotal < 15):
print ("The computer has chosen to twist again")
我的目标是如果总值小于15则让这段代码循环,以便计算机扭曲直到它超过15.我考虑使用while循环但我不确定如何携带循环开始时的当前总数,以便将下一个卡值添加到当前总计。有没有人有解决方案可以帮助我?
另外,其次,它不是这个问题中两个问题中最大的一个,但是你会怎么建议做电脑,以便随着卡的总价值变大,它再次扭曲的可能性会更小?例如,如果卡的总值为17,则计算机扭转的概率为1/10,但如果卡的总值为19,则计算机扭曲的几率为1/20。
所有有价值的帮助将一如既往地投票,谢谢! :)
答案 0 :(得分:3)
你自己蹒跚而行ranCompCard
,ranCompCard2
,ranCompCard3
,...... list
会让生活变得更轻松:
compCards = [ranCompCard, ranCompCard2]
while sum(compCards) < 15:
compCards.append(random.choice(availableCards))
为了调整选择另一张卡的概率,您可以执行以下操作:
while True:
gap = 21 - sum(compCards)
if gap > 0 and random.random() < (1 / (40 / float(gap))):
compCards.append(random.choice(availableCards))
else:
break
请注意,这是gap
与选择另一张卡的概率之间的线性关系:
>>> for card_sum in range(15, 21):
print card_sum, 1 / (40 / float(21 - card_sum))
15 0.15
16 0.125
17 0.1
18 0.075
19 0.05
20 0.025
但您可以根据需要调整等式。
在您编辑代码时,请查看(并考虑遵循)official style guide;变量名称应为lowercase_with_underscores
。
答案 1 :(得分:0)
只需在值发生变化时重新分配值。
while computerCardValueTotal < 15:
# other code
computerCardValueTotal = <new value>