为什么我收到此错误?
playerHand[1] = randint(1,11)
TypeError: 'int' object does not support item assignment
这是代码。我觉得它看起来不错,但我可能有一些非常糟糕的错误。抱歉这个愚蠢的问题:
print ("********* WELCOME TO A BLACKJACK GAME *********")
endProgram = False
from random import randint
computerHand1 = randint(1,11)
computerHand2 = randint(1,11)
print ("Dealer's cards: " + "X and " + str(computerHand2))
totalcomputerHand = computerHand1 + computerHand2
playerHand = randint(1,11)
playerHand[1] = randint(1,11)
playerHand[2] = randint(1,11)
print ("Your cards are: " + str(playerHand[1]) + " , " + str(playerHand[2]))
while endProgram == False:
totalplayerHand = playerHand[1] + playerHand[2] + playerHand[3] + playerHand[4] + playerHand[5] + playerHand[6] + playerHand[7] + playerHand[8] + playerHand[9] + playerHand[10] + playerHand[11] + playerHand[12] + playerHand[13] + playerHand[14] + playerHand[15] + playerHand[16] + playerHand[17] + playerHand[18] + playerHand[19] + playerHand[20] + playerHand[21]
if totalplayerHand == (21):
if totalcomputerHand == (21):
endProgram = True
print ("Dealer's hand equals 21 and your hand equals 21. This is a draw")
if totalcomputerHand < (21):
endProgram = True
print ("Dealer's hand equals " + str(totalcomputerHand) + " and your hand equals 21. You have won the game")
counter = 3
我正在尝试使用python中的列表进行数组(第一次),而且我也是编码和python的新手。
答案 0 :(得分:1)
下面:
playerHand = randint(1,11)
您从randint
分配了玩家手册,即int
。然后在这里:
playerHand[1] = randint(1,11)
您尝试索引到playerHand
,就像它是一个数组一样。因此错误。
答案 1 :(得分:1)
问题是您将playerHand
设置为数字。
playerHand = randint(1,11)
如果您在终端中输入上述行,您会发现它是一个数字,而不是一个列表。
playerHand[1] = randint(1,11)
playerHand[2] = randint(1,11)
您正在执行的任务类型在此处,[1]
和[2]
用于列表或字典元素(以及其他支持项目分配的元素作为您的错误消息解释)。
你可能想要做类似
的事情computerHand1 = randint(1,11)
computerHand2 = randint(1,11)
在这种情况下,正确的代码是
playerHand1 = randint(1,11)
playerHand2 = randint(1,11)
现在......这是解决整个问题的正确方法吗?我认为我们可以在数据结构方面做得更好,但这种小调整将消除您的错误。
答案 2 :(得分:1)
这是一个int(不是列表):
playerHand = randint(1,11)
要制作一个你想要的列表:
playerHand = []
然后,您可以按照您的尝试将值分配给索引:
playerHand[1] = randint(1,11)
playerHand[2] = randint(1,11)
虽然,python使用0
启动列表索引,而不是1
。
请注意,首次向列表添加新项目的最简单方法是使用extend
或append
:
playerHand.append(randint(1,11))
索引仅在列表中已有项目时才有效 - 您可以在其中提供小于len(playerHand)
的索引。
答案 3 :(得分:1)
当你有:
playerHand = randint(1,11)
playerHand
现在变量是否正确?当你尝试:
playerHand[1] = randint(1,11)
playerHand[2] = randint(1,11)
您现在将变量playerHand
视为列表,从而产生错误。要防止出现此错误,您可能需要将playerHand
设为一个列表,而不是这样:
playerHand = []
防止出错。 你也可以这样做:
playerHand1 = randint(1, 11)
playerHand2 = randint(1, 11)
您可以使用@Wally Beaver的答案,但您需要修复一件事。由此:
playerHand[1] = randint(1,11)
playerHand[2] = randint(1,11)
到此:
playerHand[0] = randint(1,11)
playerHand[1] = randint(1,11)
为什么呢?因为所有列表都以0开头,而不是1.如果您不这样做,则会出现另一个错误。要将内容添加到列表中,请执行以下操作:
playerHand1 = randint(1, 11)
playerHand2 = randint(1, 11)
playerHand.append (playerHand1)
playerHand.append (playerHand2)
这将消除您的列表分配错误。您可以通过以下方式添加此内容来了解如何:
print playerHand1, playerHand2
我希望这可以帮到你!
答案 4 :(得分:1)
你需要列一个清单。
错误的版本:
playerHand = randint(1,11) ## return list
playerHand[1] = randint(1,11) ## playerHand is not a list
playerHand[2] = randint(1,11)
正确的版本:
playerHand = []
playerHand[1] = randint(1,11) ## playerHand is a list !!
playerHand[2] = randint(1,11)
答案 5 :(得分:0)
此代码有一些错误的时刻,例如,在行中:
while endProgram == False:
totalplayerHand = playerHand[1] + playerHand[2] + playerHand[3] + playerHand[4] + playerHand[5] + playerHand[6] + playerHand[7] + playerHand[8]
所以,除了前两个,你没有任何值进入 playerHand 数组。
将 playerHand 设为数组,因为现在你有一个整数。