我正在用python开发二十一点游戏,目前正在开发一种处理纸牌的功能,但收到以下错误“ TypeError:'> =','list'和'int'的实例之间不支持”。我已经在下面粘贴了python代码。
import random
from numpy import random
def draw_card():
'''
This function will generate a random card from a deck of 52 cards
- the suit is random, the card num is also random: 1-13 with equal opportunity
- input: none
- return: String card_suit, Integer card_num
'''
list_number=[]
list_suit=[]
card_number = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A','J', 'Q', 'K'] #deck of cards
suit = ['H','S','C','D'] #Type of suites
for x in range(0,10):
random.choice(1,52) #Generate a deck of 52 cards
if card_number >= 1 and card_number <= 13:
card_suit=suit[0]
list_number.append(card_number)
list_suit.append(card_suit)
elif card_number >= 14 and card_number <= 26:
card_suit=suit[1]
list_number.append(card_number)
list_suit.append(card_suit)
elif card_number >= 27 and card_number <= 39:
card_suit=suit[2]
list_number.append(card_number)
list_suit.append(card_suit)
elif card_number >= 40 and card_number <= 52:
card_suit=suit[3]
list_number.append(card_number)
list_suit.append(card_suit)
# test
list_suit, list_number = draw_card()
print(list_suit, list_number)
发生错误是因为您试图将列表与数字进行比较,这显然会抛出错误。
编辑:同样,当您应该使用random.choice
时,您也在使用[C0
这里您不需要将数字与random.randint
变量进行比较。相反,您想将card_number
存储到一个变量中,并使用该变量进行比较。
random.randint(1,52)
您将newcard = random.randint(1,52) #Generate a deck of 52 cards
if newcard >= 1 and newcard <= 13:
定义为数组/列表,无法将其与整数值进行比较,如错误消息所述。这就像说“哪个更大?5或[5,4,6,8]。一个是数字,另一个是数字的集合。
从您的代码中,您似乎想要比较的值实际上不是card_number
,而是一个介于1到52之间的随机数,您尝试将其输入card_number
。但是,您既不会将该函数的返回值保存在变量中,也不会正确使用它。签出random.choice()
。您实际上在这里寻找的是how to use it here。
此外,您将random.randrange()
附加到random.randrange()
,这将导致如下所示的构造:
card_number
所以您最终将得到一个10x list_number
的数组和另一个10x [['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A','J', 'Q', 'K'], ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A','J', 'Q', 'K'], ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A','J', 'Q', 'K'],['2', '3', '4', '5', '6', '7', '8', '9', '10', 'A','J', 'Q', 'K'], ...]
的数组,这可能不是您想要的。
[使用一个已经使用的函数:card_number
,您只需分别从card_suit
中获得一个元素,并从card_number
中获得一个元素,而不是让整个过程变得麻烦,您只需使用card_suit
。