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

Python Blackjack程序实现卡牌横向并排打印的方法

实现二十一点卡牌横向并排打印的方案

要实现卡牌横向打印,核心思路是将每张卡牌的各行内容拆分,按行号把所有卡牌的对应行拼接后再逐行打印,而非一次性打印完一张卡牌再打下一张。

具体实现步骤

  • 统一卡牌的多行格式:确保所有卡牌的行数一致(比如固定为5行或6行),避免排版错乱。
  • 拆分卡牌内容:将每张卡牌的多行文本拆分为单行元素的列表,方便按行索引提取内容。
  • 逐行拼接打印:遍历每一行索引,把所有卡牌对应索引的行内容用间隔符拼接后打印,完成横向并排效果。

示例修改代码

假设你的卡牌逻辑基础如下,修改后可实现横向打印:

# 生成标准格式的卡牌,返回每行内容的列表
def make_card(rank, suit):
    suit_chars = {"Hearts": "♥", "Diamonds": "♦", "Clubs": "♣", "Spades": "♠"}
    suit_char = suit_chars[suit]
    # 处理牌面数字/字母的对齐,确保占2位宽度
    rank_text = f"{rank:<2}" if len(str(rank)) == 1 else str(rank)
    return [
        "┌───────┐",
        f"| {rank_text}    |",
        f"|   {suit_char}   |",
        f"|    {rank_text} |",
        "└───────┘"
    ]

# 示例手牌
player_cards = [make_card("A", "Hearts"), make_card(10, "Spades"), make_card("Q", "Diamonds")]

# 横向打印卡牌的函数
def print_horizontal_cards(cards):
    row_count = len(cards[0])
    for row_idx in range(row_count):
        # 拼接所有卡牌的当前行,用空格分隔
        current_line = "  ".join([card[row_idx] for card in cards])
        print(current_line)

# 调用打印
print("你的手牌:")
print_horizontal_cards(player_cards)

适配原有代码的思路

如果你的原有代码中是直接打印完整的多行卡牌字符串,需要先将每张卡牌的内容按换行符拆分(比如用card_str.split('\n')),得到每行的列表后,再套用上面的print_horizontal_cards逻辑即可。

内容的提问来源于stack exchange,提问作者Jason Flick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:43:19