Python二十一点模拟器开发:如何避免列表嵌套问题
解决二十一点模拟器补牌列表嵌套问题
问题出在random.sample(kortlek,1)的返回值上——这个函数会返回一个包含1个元素的列表,直接用append添加的话,自然会把这个小列表嵌套进手牌列表里,导致出现[5, 10, [13]]这种结构。
有两种简单的解决办法:
改用
random.choice()函数:它直接返回列表中的单个随机元素,而非列表。修改后的代码:if svar == "JA": handspelare.append(random.choice(kortlek)) print(handspelare)这样添加后手牌列表会是
[5, 10, 13]的扁平结构,直接用sum(handspelare)就能求和。保留
random.sample()但取列表第一个元素:如果一定要用sample(比如后续有批量抽牌的需求),可以通过索引取出返回列表里的元素再添加:if svar == "JA": handspelare.append(random.sample(kortlek,1)[0]) print(handspelare)这种写法也能避免嵌套,效果和第一种方法一致。
另外可以检查下初始抽两张牌的代码,如果是用random.sample(kortlek,2)是没问题的,因为它返回的是包含两个元素的扁平列表,直接赋值给handspelare就能得到正常的初始手牌。
内容的提问来源于stack exchange,提问作者ale123
相关产品推荐
相关产品推荐

