python - python中的牌组卡类

标签 python class random

我正在第一次创建一个类,我想我已经做了所有事情来让它运行,但我仍然遇到一堆问题,即 'list' object has no attribute ' shffule' 所以这里的问题是它不会洗牌,也不会告诉剩下的牌,有人能告诉我我做错了什么吗?提前致谢

 import random

 class card_deck:
     def __init__(self, rank, suite, card):


        self.rank= rank
         self.suite = suite
    def ranks(self):
         return self.rank
    def suites(self):
         return self.suite
     def cards(self,card):
         suit_name= ['The suit of Spades','The suit of Hearts', 'The suit of Diamonds','Clubs']
         rank_name=['Ace','2','3','4','5','6','7','8','9','10','Jack','Queen','King']


     def value(self):
         if self.rank == 'Ace':
             return 1
         elif self.rank == 'Jack':
             return 11
         elif self.rank == 'Queen':
             return 12
         elif self.rank == 'King':
             return 13
     def shffule(self):
         random.shuffle(self.cards)
     def remove(self,card):
         self.cards.remove(card)


     def cardremaining(self):
        self.suite-self.rank




 def main():
     try:
         deck=[]
         for i in ['Spades','Hearts', ' Diamonds','Clubs']:
         for c in ['Ace','2','3','4','5','6','7','8','9','10','Jack','Queen','King']:
                 deck.append((c, i))
         deck.shffule

         hand = []
         user =eval(input('Enter a number of cards: 1-7 '))
         print()
         while user <1 or user >7:
             print ("Only a number between 1-7:")
             return main()

         for i in range(user):
             hand.append(deck[i]) 
         print (hand)
     except ValueError:
         print("Only numbers")
         main()

最佳答案

除了你的代码包含许多小错误之外;我将尽力回答您的主要问题。

如果您要使用 card_deck 类的 shffule[sic] 方法,那么您首先需要创建该类的实例(而您尝试使用列表调用该方法)。像这样:

deck = card_deck(some_rank,some_suit,some_card)
deck.shffule() #Now you can call the method

现在,由于您将其设为类实例,因此您无法像 hand.append(deck[i])
那样从中获取项目 除非您在类定义中定义了方法 __getitem__,如下所示:

#this will be in your class definition
def __getitem__(self,i):
    return self.card_list[i] #Of course you have to define a list of cards in your class too.

在我看来,您应该花更多的时间来尝试理解类是如何定义的、方法如何工作以及如何访问类的成员。之后你会在这里做得更好

关于python - python中的牌组卡类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20017850/

相关文章:

class - Grails保存扩展类

c++ - 生成(不是这样)具有特定字符串出现的随机字符串

python - 如何在 Python 中设置全局随机种子

c++ - 启动 Mersenne twister PRNG

Python编程: Classes

python - 在 Python 中将值附加到字典

python - 在 Django 查询中使用 max()

Python动态导入脚本,需要有__name__ == "__main__"代码才能调用

python - 不应用所选参数的随机搜索 CV

class - 如何从 JPA 实体名称中获取 Class?