带整数比较的python问题

带整数比较的python问题,python,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:

我在纸牌游戏中使用一个函数,检查每张牌的价值,看看它是否高于最后一张牌

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是假的,我想你的意思是它说“2”>13是真的。你需要改变

cardValue=card[0]


为什么不使用字典而不是大量的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
然后


使用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]
与:


…为什么您认为13>2应该为False?提示:您可以用
return cardValue>=prevValue
替换最后一个if/elif/else块。在Python中,您可以执行pile[-1]而不是pile[len(pile)-1]。负索引从列表末尾向后计数访问项目。任何非空列表的最后一项始终是_列表[-1]。。。。那你是怎么储存这十个的呢?谢谢伙计们,贾斯汀,你是对的,这不是一个整数。我不知道“5”等于“2”等等。哇,@Joao的方法要好得多<如果您使用的是最新的Python,那么code>defaultdict也是一个选项。
cardValue = cards[card[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]
cardMap = { 'J': 11, 'Q':12, 'K': 13, 'A': 14 }
cardValue = cardMap.get(card[0]) or int(card[0])