Python 无法调用获取错误列表
我想从一副牌中随机取回一张牌Python 无法调用获取错误列表,python,Python,我想从一副牌中随机取回一张牌 import itertools, random from random import randint class card: __deck = list(itertools.product(range(1,14),['s','h','d','c'])) def getCard(self): randCard = self.__deck(randint(0,52)) return randcard card = car
import itertools, random
from random import randint
class card:
__deck = list(itertools.product(range(1,14),['s','h','d','c']))
def getCard(self):
randCard = self.__deck(randint(0,52))
return randcard
card = card()
print card.getCard()
这将返回:TypeError:“list”对象不可调用
self.\uu组(randint(0,52))
尝试调用listself.\uu组
,当然不可调用
要访问列表的元素,请使用以下命令:
self.__deck[randint(0,52)]
假设
return randcard
是一个打字错误,实际上应该是return randcard
问题在于行randCard=self.\uu deck(randint(0,52))
您所做的是使用括号而不是方括号:
randCard = self.__deck(randint(0,52))
\/
randCard = self.__deck[randint(0,52)]
第二张randCard
中还有一个小写字母,我在下面的代码中为您修复了它。
新代码:
import itertools, random
from random import randint
class card:
__deck = list(itertools.product(range(1,14),['s','h','d','c']))
def getCard(self):
randCard = self.__deck[randint(0,51)] # This line was creating the error. Also randint will return a value from 0 to 52 included so its a good idea to change it to randint(0, 51)
return randCard
card = card()
print card.getCard()
方括号用于访问数组索引,而圆括号用于调用函数,这就是错误表明您正在尝试调用列表的原因。此外,您返回的变量
randcard
与randcard
不同……此外,您还需要self.\uu deck[randint(0,51)]
或self.\uu deck[randrange(52)]
。或者更好的选择(self.\uu deck)
。您的卡实例不能有变量card
,因为这会影响card
类。您应该使用PEP-8命名约定并调用类card
。非常感谢,我还必须删除randcard变量并直接返回语句。