循环中向hand列表追加元素时列表被重置的技术求助
问题解决:循环中列表无法累积元素的问题
嘿,我一眼就发现问题所在啦!你之所以每次循环后hand列表都会被重置,是因为你把hand = []放在了while循环的内部——这意味着每执行一轮循环,都会重新创建一个空的hand列表,之前追加的元素自然就没了。
修正后的代码
只需要把hand的初始化移到while循环外面,就能让它持续累积卡牌了:
import random # 别忘了导入random模块,不然代码会报错哦 deckTypes = [] cardType = ["Spade", "Hearts", "Diamonds", "Clubs"] cardValues = ["Ace", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K"] Values = [[1, 11], 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] for i in cardType: for j in cardValues: deckTypes.append(str(j) + " of " + str(i)) deck = dict(zip(deckTypes, Values*4)) z = 0 hand = [] # 把初始化移到循环外面! while z < 5: card = random.choice(list(deck)) handValue = deck[card] hand.append(card) print(hand) # 现在每次打印的都是累积后的列表啦 z += 1
额外小建议
如果不希望重复抽到同一张牌,可以在抽完后把这张牌从deck里移除,比如在hand.append(card)后面加上:
del deck[card]
这样就不会抽到重复的卡牌了,更符合真实抽牌的逻辑~
内容的提问来源于stack exchange,提问作者mark olieman
相关产品推荐
相关产品推荐

