python问题与整数比较

时间:2010-09-08 21:10:40

标签: python

我在纸牌游戏中使用了一项功能,检查每张卡的价值,看看它是否高于最后一张牌。

def Valid(card):
prev=pile[len(pile)-1]
cardValue=0
prevValue=0
if card[0]=="J":
    cardValue=11
elif card[0]=="Q":
    cardValue=12
elif card[0]=="K":
    cardValue=13
elif card[0]=="A":
    cardValue=14
else:
    cardValue=card[0]
prevValue=prev[0]
if cardValue>prevValue:
    return True
elif cardValue==prevValue:
    return True
else:
    return False

问题是,每当我拿到一张面卡,它似乎都无法运作。 它认为13> 2是真的,例如

编辑:对不起,我的意思是认为13> 2是假的

3 个答案:

答案 0 :(得分:12)

我认为你的意思是说“2”> 13这是真的。你需要改变

cardValue=card[0]

cardValue=int(card[0])

答案 1 :(得分:3)

为什么不使用字典而不是if / else块的大型级联?

cards = dict(zip((str(x) for x in range(1, 11)), range(1, 11)))
cards['J'] = 11
cards['Q'] = 12
cards['K'] = 13
cards['A'] = 14

然后

cardValue = cards[card[0]]

答案 2 :(得分:2)

使用dict可以使您的代码更清晰:

替换:

if card[0]=="J":
    cardValue=11
elif card[0]=="Q":
    cardValue=12
elif card[0]=="K":
    cardValue=13
elif card[0]=="A":
    cardValue=14
else:
    cardValue=card[0]

使用:

cardMap = { 'J': 11, 'Q':12, 'K': 13, 'A': 14 }
cardValue = cardMap.get(card[0]) or int(card[0])