在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”操作符是如何工作的。“and”和“or”是分开的吗?“and”和“or”是否有操作顺序? 我运行了代码,它是双向的,但我想确保我确切地了解操作符是如何工作的。你知道吗
是的,第二个代码块相当于第一个代码块。根据the documentation,
or
的优先级低于and
。这意味着if语句的计算结果是这就是你想要的。你知道吗
您可以返回该布尔表达式的结果以缩短代码:
vaultah's answer完美地解决了你的实际问题——他们值得投票和打勾。你知道吗
但是我认为用你正在学习的每种语言编写21点程序是更好地理解它的一个很好的方法,所以我把代码放在一起展示了实现21点测试的不同方法。更多的是出于教育目的,而不是真正回答你的问题:
如果我今天实现的话,卡片和手就是类,并且会有一个
Hand.is_blackjack()
方法,比如:示例:
抱歉愚蠢的不回答,但这些只是不同的想法考虑。别担心如果他们在你头上,你会到的。你知道吗
通常的建议是,如果你不知道,那么你的读者可能也不知道,如果你使用括号,对每个人都更好。你知道吗
尽管你可以尝试其他的配方,比如
或者编写助手函数并使用
相关问题 更多 >
编程相关推荐