我在尝试编程基本的黑杰克策略。我想让我的程序返回正确的移动取决于庄家的上升卡和玩家2卡从游戏开始。我把一个简单的函数放在一起,用来处理传入的玩家卡,在一个函数中用来处理庄家卡和玩家卡
def player_has(card_sets, player_cards):
for card_set in card_sets:
if (card_set[0] and card_set[1]) in player_cards:
return True
return False
def get_best_move(player_cards, dealer_card):
move = ''
if dealer_card == 2 or dealer_card == 3 or dealer_card == 4 and \
player_has([[2, 2], [3, 3], [6, 6], [7, 7], [8, 8], [9, 9], [11, 11]], player_cards):
print('split')
elif dealer_card == 2 or dealer_card == 3 or dealer_card == 4 and player_has([[4, 4]], player_cards):
print('Hit')
elif dealer_card == 2 or dealer_card == 3 or dealer_card == 4 and player_has([[5, 5]], player_cards):
print('Double Down')
elif dealer_card == 2 or dealer_card == 3 or dealer_card == 4 and player_has([[10, 10]], player_cards):
print('Stand')
print(move)
return move
_player_cards = [10, 10]
_dealer_card = 3
get_best_move(_player_cards, _dealer_card)
问题是这个测试应该返回包含值[10,10]的elif语句,或者打印('stand')。但是相反,它返回的if语句不包括玩家卡10和10的组合
布尔表达式中缺少一些括号
在主
if
语句中,您希望在所有or
语句周围加上括号,如:否则,
and
优先于or
正如在评论中指出的,您希望:
而不是你所拥有的,因为你想检查
in
两次参见operator precedence section of the Python docs for more info
相关问题 更多 >
编程相关推荐