2017-08-07 27 views
0

我想在Python 3中制作一个二十一点模拟器,并且试图定义一个函数来为它处理的卡片分配一个数值。我相信我在调用我的函数时犯了一个错误。通过在Python中调用一个函数将一个数值赋给一个字符串3

{ 
import random 
import CardVal 

cards = [ 
'AS', '2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', 'TS', 'JS', 'QS', 'KS', 
'AC', '2C', '3C', '4C', '5C', '6C', '7C', '8C', '9C', 'TC', 'JC', 'QC', 'KC', 
'AD', '2D', '3D', '4D', '5D', '6D', '7D', '8D', '9D', 'TD', 'JD', 'QD', 'KD', 
'AH', '2H', '3H', '4H', '5H', '6H', '7H', '8H', '9H', 'TH', 'JH', 'QH', 'KH' 
] 
decks = 6 * cards 


player = [] 
dealer = [] 

for i in range(2): 
    player.append(decks.pop(random.randrange(len(decks) - 1))) 
    dealer.append(decks.pop(random.randrange(len(decks) - 1))) 


print('Players cards:', player) 
print('Dealers card:', dealer[1]) 


total = 0 
for i in range(len(player)): 
    CardVal.card_value(player[i]) 

    total += player[i] 
} 

,这里是功能我打电话

{ 
def card_value(card): 
    if '2' in card: 
     card = 2 
    elif '3' in card: 
     card = 3 
    elif '4' in card: 
     card = 4 
    elif '5' in card: 
     card = 5 
    elif '6' in card: 
     card = 6 
    elif '7' in card: 
     card = 7 
    elif '8' in card: 
     card = 8 
    elif '9' in card: 
     card = 9 
    elif 'T' in card or 'J' in card or 'Q' in card or 'K' in card: 
     card = 10 
    elif 'A' in card: 
     card = 11 
} 
+1

使用字典而不是... – Idos

+0

你得到什么输出?你期望得到什么? –

+1

大括号是什么? – user2357112

回答

0

只需使用一本字典:

def card_value(card): 
    values = {'T': 10, 'J': 10, 'Q': 10, 'K': 10, 'A': 11} 
    if card[0].isdigit(): 
     return int(card[0]) 
    else: 
     return values[card[0]] 
+0

卡串有西装以及价值 - 'AS'和'9H' –

+0

@ robert_x44 ^正确,所以我需要的代码知道,无论西装所有T是10。 Idk如何用字典 –

+0

@ J.Moz编辑,只是用'[0]'索引。 –

相关问题