Как создать карточную колоду, которая возвращает ответ? - PullRequest
0 голосов
/ 02 апреля 2020
import random
def shuffled_deck():
   basic_deck = list(range(2, 15))
   random.shuffle(basic_deck)
   return basic_deck
print(shuffled_deck())
def suits():
    Suits_Deck = list('Spades','Hearts','Clubs','Diamonds')
    random.shuffle(Suits_Deck)
    return(Suits_Deck)
e = random.randint(0,3)
f = random.randint(0,3)
a = random.randint(0,11)
b = random.randint(0,11)
c = str(input("What is Player 1's name? "))
d = str(input("What is Player 2's name? "))
print(c+ ' drew card ' + shuffled_deck[a] + 'of'+ suits[e]) 
print(d+ ' drew card ' + shuffled_deck[b] + 'of'+ suits[f])'''

Хорошо, так что в основном мне нужно сделать колоду карт. Мне также нужно, чтобы код выбирал карту случайным образом и назначал ее игроку. По какой-то причине, когда я пытаюсь запустить код, появляется эта ошибка.

Traceback (most recent call last):
    File "main.py", line 17, in <module>
      print(c+ ' drew card ' + shuffled_deck[a] + 'of'+ suits[e]) 
TypeError: 'function' object is not subscriptable

Ответы [ 3 ]

0 голосов
/ 02 апреля 2020

Вам нужно получить список, вызвав функцию shuffled_deck, а затем проиндексировать возвращенный список, то есть shuffled_deck()[a] вместо shuffled_deck[a].

То же самое относится к suits[a] - это должно быть записывается как suits()[a] для первого вызова функции.

0 голосов
/ 02 апреля 2020

это уточняющая версия от @dspencer и @Praveen answer.

, поэтому вы хотите напечатать, как:

  • игрок A вытянул карту 5 треф
  • игрок B вытянул карту 3 пик

Если это то, что вы хотите, вы можете редактировать свой код.

import random
def shuffled_deck(n):
   basic_deck = list(range(2, 15))
   random.shuffle(basic_deck)
   return basic_deck[n] 

def suits(n):
    Suits_Deck = ['Spades','Hearts','Clubs','Diamonds']
    random.shuffle(Suits_Deck)
    return Suits_Deck[n]


e = random.randint(0,3)
a = random.randint(0,11)


#first attempt
print(' drew card ' + str(shuffled_deck(a)) + ' of '+ suits(e))
#second attempt
print(' drew card ' + str(shuffled_deck(a)) + ' of '+ suits(e))

Примечание в функции suit (), непосредственно составьте список, используя '[]' Python list , также ваш shuffled_deck[a], это неправильный способ вызвать функция, используйте shuffled_deck(a). 'a' из randomint будет индексом списка Basic_deck.

Надеюсь, это поможет

0 голосов
/ 02 апреля 2020

Вместо shuffled_deck[a] используйте shuffled_deck()[a] и
Вместо suits[a] используйте suits()[a]

И shuffled_deck, и suits - это функции, которые возвращают список, поэтому вызовите функцию, затем используйте индекс для получения элемента fun()[index]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...