Python 21点游戏如何在while循环中携带变量

Python 21点游戏如何在while循环中携带变量,python,python-3.4,Python,Python 3.4,我还在用Python制作我的21点游戏,我的目标是让电脑“扭转”(再拿一张牌),直到总价值超过15。从那时起,我希望这样做,随着卡的总数越来越高,计算机获得另一张卡的机会也会越来越小,就像人类一样(如果数字不太大,则冒险)。以下代码在计算机获得两个值后发生 if(computerCardValueTotal

我还在用Python制作我的21点游戏,我的目标是让电脑“扭转”(再拿一张牌),直到总价值超过15。从那时起,我希望这样做,随着卡的总数越来越高,计算机获得另一张卡的机会也会越来越小,就像人类一样(如果数字不太大,则冒险)。以下代码在计算机获得两个值后发生

if(computerCardValueTotal<15):
打印(“计算机已决定扭曲”)
ranCompCard3=随机选择(可用Cards)
computerCardValueTotal=ranCompCard+ranCompCard2+ranCompCard3
如果(computerCardValueTotal<15):
打印(“计算机已选择再次扭曲”)

我的目标是,如果总值小于15,则让这段代码循环,以便计算机扭曲直到超过15。我已经考虑过使用while循环,但是我不确定如何将当前的总值带入循环的开始,以便将下一张卡的值添加到当前的总值中。有人能帮我解决吗

另外,第二,这不是这个问题中两个问题中最大的一个,但是你会建议如何使用计算机,以便随着卡的总价值越来越大,它再次扭曲的机会越来越小?例如,如果卡的总价值为17,则计算机扭曲的几率为1/10,但如果卡的总价值为19,则计算机扭曲的几率为1/20


所有有价值的帮助都将被投票选出,一如既往,提前感谢!)

只需在值更改时重新分配值即可

while computerCardValueTotal < 15:
  # other code
  computerCardValueTotal = <new value>
当computerCardValueTotal<15时:
#其他代码
computerCardValueTotal=

当值发生变化时,只需重新分配值即可

while computerCardValueTotal < 15:
  # other code
  computerCardValueTotal = <new value>
当computerCardValueTotal<15时:
#其他代码
computerCardValueTotal=

当值发生变化时,只需重新分配值即可

while computerCardValueTotal < 15:
  # other code
  computerCardValueTotal = <new value>
当computerCardValueTotal<15时:
#其他代码
computerCardValueTotal=

当值发生变化时,只需重新分配值即可

while computerCardValueTotal < 15:
  # other code
  computerCardValueTotal = <new value>
当computerCardValueTotal<15时:
#其他代码
computerCardValueTotal=

您通过制作例如
ranCompCard
ranCompCard2
ranCompCard3
。。。当
列表
将使生活更轻松时:

compCards = [ranCompCard, ranCompCard2]
while sum(compCards) < 15:
    compCards.append(random.choice(availableCards))
但你可以根据需要调整方程



<>当你编辑你的代码时,看一看(并考虑下面);变量名应该是带有下划线的
小写字母

您通过制作例如
ranCompCard
ranCompCard2
ranCompCard3
。。。当
列表
将使生活更轻松时:

compCards = [ranCompCard, ranCompCard2]
while sum(compCards) < 15:
    compCards.append(random.choice(availableCards))
但你可以根据需要调整方程



<>当你编辑你的代码时,看一看(并考虑下面);变量名应该是带有下划线的
小写字母

您通过制作例如
ranCompCard
ranCompCard2
ranCompCard3
。。。当
列表
将使生活更轻松时:

compCards = [ranCompCard, ranCompCard2]
while sum(compCards) < 15:
    compCards.append(random.choice(availableCards))
但你可以根据需要调整方程



<>当你编辑你的代码时,看一看(并考虑下面);变量名应该是带有下划线的
小写字母

您通过制作例如
ranCompCard
ranCompCard2
ranCompCard3
。。。当
列表
将使生活更轻松时:

compCards = [ranCompCard, ranCompCard2]
while sum(compCards) < 15:
    compCards.append(random.choice(availableCards))
但你可以根据需要调整方程



<>当你编辑你的代码时,看一看(并考虑下面);变量名应该是带有下划线的
小写字母

,这不就是用随机可用的卡片替换compCards吗,还是添加它?以前没有使用过append.+1来提及样式指南。“我正要发表一篇评论中的saem”。@jonrsharpe嗨,John,很抱歉在不到两周的时间里提出了这篇文章。您是否有可能简要解释“差距”解决方案背后的技术细节。另外,由于卡片是1、2、3、4、5、6、7、8、9、10、Queen、King、Jack、Ace,附加解决方案不会起作用(别担心,我没有那么愚蠢,我已经让这个问题过去了近两周,我今天才真正回到我的PC,意识到解决方案的问题)。我的意图是将卡片名称保留到游戏结束,这样它就可以说,例如,“计算机有一个国王a 2和a 7”。非常感谢您的帮助!你说的“技术细节”是什么意思?这是一个相当简单的方法;你有没有特别不明白的地方?您可以将任何对象添加到列表中,因此不清楚“不会起作用”是什么意思。
shouldDealerDraw=lambda dealer\u sum:random()
可能比公式更有用,但我。。。可靠的答案(+1)这不就是用随机可用的卡片替换compCards吗,还是会添加它?以前没有使用过append.+1来提及样式指南。“我正要发表一篇评论中的saem”。@jonrsharpe嗨,John,很抱歉在不到两周的时间里提出了这篇文章。您是否有可能简要解释“差距”解决方案背后的技术细节。另外,由于卡片是1、2、3、4、5、6、7、8、9、10、Queen、King、Jack、Ace,附加解决方案不会起作用(别担心,我没有那么愚蠢,我已经让这个问题过去了近两周,我今天才真正回到我的PC,意识到解决方案的问题)。我的意图是将卡片名称保留到游戏结束,这样它就可以说,例如,“计算机有一个国王a 2和a 7”。非常感谢您的帮助!你说的“技术细节”是什么意思?这是一个相当简单的方法;你有没有特别不明白的地方?你可以