我正在尝试用python制作21点游戏。我遇到了一个问题,因为我试图在我的游戏中使用随机模块。我使用random模块得到一个与列表中的索引号相协调的数字。我列的单子上有面值。不过,我不知道如何使用随机索引号打印这些值。这是我的代码:
# this is a blackjack game made in python
import random
import time
# make a list full of the card values
cards = (["A", "K", "Q", "J", 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexNum1 = random.randint(0,12)
indexNum2 = random.randint(0,12)
indexNum3 = random.randint(0,12)
indexNum4 = random.randint(0,12)
indexNum5 = random.randint(0,12)
for card in cards:
print card(indexNum1)
print card(indexNum2)
print card(indexNum3)
print card(indexNum4)
print card(indexNum5)
我希望有人能帮我解决这个问题。谢谢!在
如果你想不重复地随机选择k张卡片并保留索引,这可能有助于:
如果要正确模拟一副牌,则必须执行以下操作:
这将跟踪卡片组,字面上是
shuffles
它们,这是一个方便的random
函数,然后从卡片组(pops
)中“提取”。你必须保持对牌组的跟踪,这样你就可以,例如,画4个A,但这样就不会有更多的了。这种方法在纸牌绘制中也是持续的-当你从牌堆中抽牌时,它们实际上是被移除的,所以你在整个游戏中也不能画出超过4张A。如果你试图从一个空牌堆中抽取,它会崩溃,尽管你可以在draw_cards
中放入一个if
语句来填充牌堆,但是你应该知道,如果牌堆用完了,就会发生这种情况——这可能会导致游戏中出现5个a。在我把你所有的数字都改成了字符串,因为如果有些卡片不是整数,它们就没有用做整数了。(另一种方法是将它们全部保留为整数,这可以通过
range
函数来实现——猜测一下range(13)
,或者如果您想从2开始,range(2, 15)
)。我还将10
改为0
,因为0
没有使用,这使得它更加简洁。如果你想换回来应该很容易。在这种方法与其他方法的区别在于,其他方法从不移除卡(
pop
)。他们只是随机挑选卡片,然后把它们放回原处,尽管它们已经被抽走了。在您可以直接索引
cards
,例如:但是,如果您想在循环中循环,则应该迭代索引:
^{pr2}$但这比您需要的要困难得多,因为目前您的代码可能会返回
5
Aces—我假设您不希望:相关问题 更多 >
编程相关推荐