在 Python 中是这样的:
def blackjack_check(hand): # hand is a tuple
winning_cards = [10,'Jack','Queen','King']
if hand[0] in winning_cards and hand[1] == 'Ace':
return True
elif hand[0] == 'Ace' and hand[1] in winning_cards:
return True
else:
return False
和这个一样吗?
def blackjack_check(hand): # hand is a tuple
winning_cards = [10,'Jack','Queen','King']
if (hand[0] in winning_cards and hand[1]=='Ace' or
hand[0] == 'Ace' and hand[1] in winning_cards):
return True
else:
return False
我可以使用第二个代码块而不是第一个吗?它会消除额外的 elif 语句,而且看起来更干净。 我关心的是“和”和“或”运算符的工作方式。两个“和”比较是分开的,“或”比较它们吗? 'and' 和 'or' 有运算顺序吗? 我运行了代码,它可以双向工作,但我想确保我准确理解运算符的工作原理。
请您参考如下方法:
是的,第二个代码块等同于第一个。根据the documentation , or 的优先级低于 and。这意味着 if 语句被评估为
if ((hand[0] in winning_cards and hand[1] == 'Ace') or
(hand[0] == 'Ace' and hand[1] in winning_cards)):
这就是你想要的。
您可以返回该 bool 表达式的结果以缩短代码:
def blackjack_check(hand):
winning_cards = [10, 'Jack', 'Queen', 'King']
return (hand[0] in winning_cards and hand[1] == 'Ace' or
hand[0] == 'Ace' and hand[1] in winning_cards)
