我也在写二十一点游戏,自学python。 为了表示甲板上的52张牌,我在列表中有一个嵌套列表,该列表包含其在甲板上的原始位置(0-51),它是西装,并且其面值为字符串。在我的职责范围内,我发给我的玩家卡片,并将套牌值(0-51)的西装值和面值存储在列表中。我试图将套牌值读入我创建的用于评估玩家手牌得分的函数中,但是却出现错误:TypeError:列表索引必须是整数或切片,而不是列表。因此,我没有正确索引,但这似乎是索引以到达列表内列表的第一个值的正确方法,因此我很困惑。你们能帮帮我吗。
这是我的功能:
#this function evalutes the game value of a card and adds it to the players score
def card_value(card, value):
if card%13 == 0 and value<=10: #Evaluate value of ace based on the value of the rest
value +=11 # of the deck
elif card%13 == 0 and value>10:
value+=1
elif card%13 == 10 or 11 or 12: # evaluate face cards
value += 10
else:
value += card%13 +1 #Evaluate rest of the cards in the deck
这是我的函数调用:
for _ in player1_hand:
player1_score += card_value(player1_hand[_][0],player1_score)
感谢帮助人员。
答案 0 :(得分:0)
修复了调用玩家手牌的for loop功能。我在为列表列表中的player1-hand索引不正确。我已修复了分度调用,但是该函数为玩家的手返回了不正确的手值。我将修复该函数的逻辑,并在以后进行更新。
for _ in player1_hand: #use for loop to evaluate the value using function card_value
#print(_[1]) #proper indexing call.
player_card = _[0]
player1_score += card_value(player_card, player1_score)