这是我遇到的另一个问题。下面有 4 个列表:
short_card = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] long_card = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] short_suit = ['c', 'd', 'h', 's'] long_suit = ['clubs', 'diamonds', 'hearts', 'spades']
现在我应该做的是编写两个函数:card_str(c) 和 hand_str(h)。
card_str(c) 接受两个字符串并搜索以找出相应的字符以文本显示卡片。例如,如果我输入“kh”,程序将输出“红心国王”。
hand_str(h) 接受两个字符串的列表并以全文显示相应的手牌。例如,如果我输入 ([“Kh”, “As”, “5d”, “2c”]),它将输出“红心 K、黑桃 A、方块 5、梅花 2”。
以下是我目前所拥有的:
short_card = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] long_card = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] short_suit = ['c', 'd', 'h', 's'] long_suit = ['clubs', 'diamonds', 'hearts', 'spades'] def card_str(c): def hand_str(h): #- test harness: do not modify -# for i in range(13): print card_str(short_card[i] + short_suit[i%4]) l = [] for i in range(52): l.append(short_card[i%13] + short_suit[i/13]) print hand_str(l)
要实现你要求的 card_str(c) 和 hand_str(h) 函数,首先要理解你的需求:
card_str(c)
hand_str(h)
short_card = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] long_card = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] short_suit = ['c', 'd', 'h', 's'] long_suit = ['clubs', 'diamonds', 'hearts', 'spades'] # card_str(c) 将卡片缩写转换为完整的卡片文本 def card_str(c): # 提取卡片的值和花色 card_value = c[0] # 第一位字符表示卡片的值 (如 "K" for king) card_suit = c[1] # 第二位字符表示卡片的花色 (如 "h" for hearts) # 获取卡片的完整值名称 card_value_name = long_card[short_card.index(card_value)] # 获取卡片的完整花色名称 card_suit_name = long_suit[short_suit.index(card_suit)] # 返回完整卡片名称 return f"{card_suit_name} {card_value_name}" # hand_str(h) 将一副牌(列表)转换为完整的卡片文本 def hand_str(h): # 使用列表推导将每张卡片转化为完整的卡片文本 return '、'.join([card_str(c) for c in h]) # 测试代码 # 测试 card_str 函数 for i in range(13): print(card_str(short_card[i] + short_suit[i % 4])) # 创建一副完整的手牌,按顺序排列 l = [] for i in range(52): l.append(short_card[i % 13] + short_suit[i // 13]) # 创建52张卡片 # 测试 hand_str 函数 print(hand_str(l))
"Kh"
K
h
short_card
short_suit
king
hearts
最终返回“完整卡片名称”,如 "hearts king"。
"hearts king"
hand_str(h):
["Kh", "As", "5d", "2c"]
card_str
'、'
hearts ace diamonds king hearts queen spades jack clubs ten diamonds nine hearts eight spades seven clubs six diamonds five hearts four spades three clubs deuce hearts ace、diamonds king、hearts queen、spades jack、clubs ten、diamonds nine、hearts eight、spades seven、clubs six、diamonds five、hearts four、spades three、clubs deuce
、
这样,程序就能正确地显示每张卡片的详细描述,并且处理完整副手牌。