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

Python生成扑克牌代码出现卡片集重复添加至card_pack列表两次问题

问题原因

你的代码问题出在while cards <= 52的循环判断逻辑,和内层for循环的执行规则冲突:

  • 13种牌面 * 4种花色刚好是52张牌,内层两层for循环完整执行一次就会生成全部52张牌,同时cards变量会从0累加至52
  • 此时while会再次执行条件判断,52 <=52的结果为真,会再次进入内层循环执行一遍,又新增了52张牌,直到cards累加到104才会退出循环,最终得到两副重复的牌组。

修复方案

方案1(推荐):删除多余的while循环

两层for循环本身就可以完整遍历所有牌面和花色的组合,不需要额外加while控制,修改后代码如下:

numbers = ("A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K")
symbols = ("clubs", "diamonds", "hearts", "spades")
card_pack = []

for symbol in symbols:
    for number in numbers:
        card = number + " " + symbol
        card_pack.append(card)

print("The pack has the following cards:")
for card in card_pack:
    print(card)

方案2:修改while循环的判断条件

如果需要保留while循环的写法,将判断条件改为while cards < 52即可,当cards累加到52时就不会再次进入循环。

优化建议

可以用列表推导式简化牌组生成逻辑,一行代码即可完成牌组生成:
card_pack = [f"{number} {symbol}" for symbol in symbols for number in numbers]

内容的提问来源于stack exchange,提问作者Maria G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:54:03