You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环中向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:45:58