如何编写Python for循环生成6副扑克牌的唯一命名变量
问题原因
你的代码逻辑错误出在循环嵌套结构:用于控制卡牌唯一序号的i循环内部嵌套了花色、点数的完整遍历逻辑,导致每个i值都会触发52次打印,自然会出现同一个card_i重复输出52次的问题。
修复后代码
# 预先定义花色列表,减少重复的if判断 colors = ["clubs", "diamond", "hearts", "spades"] # 初始化卡牌序号计数器 card_index = 1 # 外层循环控制6副牌 for _ in range(6): # 遍历4种花色 for color in colors: # 遍历13个点数 for num in range(1, 14): print(f"card_{card_index} = tuple(color = {color}, num = {num})") card_index += 1
代码说明
- 单副牌共4花色×13点数=52张,6副牌总计312张,计数器会从1自动递增到312,保证每张卡牌对应唯一变量名
- 输出顺序完全符合预期:同花色的13个点数连续输出,点数遍历完成后自动切换下一个花色,单副牌输出完成后自动输出下一副牌的内容
- 去掉了冗余的嵌套循环和if判断,执行效率更高
内容的提问来源于stack exchange,提问作者571Fanatic
相关产品推荐
相关产品推荐

