TypeError:'> ='在二十一点游戏中'list'和'int'的实例之间不支持

问题描述 投票:0回答:2

我正在用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)
python list function random blackjack
2个回答
0
投票

发生错误是因为您试图将列表与数字进行比较,这显然会抛出错误。

编辑:同样,当您应该使用random.choice时,您也在使用[C0

这里您不需要将数字与random.randint变量进行比较。相反,您想将card_number存储到一个变量中,并使用该变量进行比较。

random.randint(1,52)

0
投票

您将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

© www.soinside.com 2019 - 2024. All rights reserved.