我正在第一次创建一个类,我想我已经做了所有事情来让它运行,但我仍然遇到一堆问题,即 '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/