2016-12-23 14 views
-1

Я пытаюсь восстановить случайную карту из колоды.Получение списка ошибок не является вызываемым

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' object is not callable

+1

Кроме того, ваша переменная 'randcard', которую вы возвращаете, не совпадает с' randCard' ... –

+1

Кроме того, вы хотите использовать 'self .__ deck [randint (0,51)]' или 'self .__ deck [randrange (randrange) 52)] '. Или даже лучший 'choice (self .__ deck)'. –

+0

И вы не можете иметь переменную 'card' для вашего экземпляра карты, потому что это clobbers ваш класс' card'. Вы должны использовать соглашения об именах PEP-8 и вызвать класс 'Card'. –

ответ

1

self.__deck(randint(0,52)) попытки вызова перечень self.__deck, который, конечно, не отозваны.

Для доступа к элементу списка, используйте:

self.__deck[randint(0,52)] 

Предполагая, что return randcard опечатка, как это должно быть на самом деле return randCard.

+0

Огромное вам спасибо, мне также пришлось удалить переменную randcard и сразу вернуть заявление. – Snowsnooks

0

Проблема заключается линией randCard = self.__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() 

Квадратные скобки используются для доступа к индексу массива, тогда как круглые скобки используются для вызова функции, поэтому ошибка говорит, что вы пытаетесь вызвать список.

Смежные вопросы