我有一个二十一点游戏的多手牌。
离。
Player 1 = ['AD', 'AS']
Player 2 = ['6C', '3D']
Player 3 = ['TD', 'AH']
我试图通过将每个牌的价值引用到牌组词典中来获取每个牌的价值:
deckValue = {'AH':11, '2H':2,'3H':3, '4H':4, '5H':5, '6H': 6, '7H': 7, '8H':8,
'9H':9, 'TH':10, 'JH':10, 'QH':10, 'KH':10, 'AC':11, '2C':2,'3C':3,
'4C':4, '5C':5, '6C':6,'7C': 7, '8C':8, '9C':9, 'TC':10, 'JC':10,
'QC':10, 'KC':10, 'AS':11, '2S':2,'3S':3, '4S':4, '5S':5, '6S': 6,
'7S': 7, '8S':8, '9S':9, 'TS':10, 'JS':10, 'QS':10, 'KS':10,
'AD':11, '2D':2,'3D':3, '4D':4, '5D':5, '6D': 6, '7D': 7, '8D':8,
'9D':9, 'TD':10, 'JD':10, 'QD':10, 'KD':10}
使用
可以在字典中查找值deckvalue.get(key)
或
deckvalue [键]
其中key是每手牌中的字符串。 deckvalue.get(' AH')= 11
为了实现我想要做的事情,我使用for循环遍历每只手并找到总值。
def calculate_hand(pHands):
# What I have so far
total = 0
for i in pHands:
deckValue.get(pHands[i][0])
deckValue.get(pHands[i][1])
total = #value of 0 + value of 1
return
pH值为:
pHands = [['AD', 'AS'], ['6C', '3D'], ['TD', 'AH']]
但我得到的列表索引必须是整数,而不是列表'错误
我是Python的新手,所以我不知道这是什么(但可能是由于pH值包含str元素而不是int元素)。
我怎样才能获得每只手的个人总数?
例如。
pHands[0] = 22
pHands[1] = 9
pHands[2] = 21
我是否必须分配一个新变量来保存每手总数?
感谢您的任何意见。
答案 0 :(得分:4)
如果您在列表上进行迭代,则不会获得索引,但实际上是列表元素。更好:
def calculate_hand(pHands):
# What I have so far
values = []
for (card1, card2) in pHands:
total = deckValue.get(card1) + deckValue.get(card2)
values.append(total)
return values
此外,还有一种更简洁的方式来获取卡的价值:
def getvalue(card):
val = card[0]
return 11 if val=="A" else 10 if val in "TQKJ" else int(val)
如果你有这样的函数,你实际上可以在单个列表理解中编写整个calculate_hand
函数:
def calculate_hand(pHands):
return [getvalue(card1) + getvalue(card2) for (card1, card2) in pHands]