【发布时间】:2013-11-16 11:26:49
【问题描述】:
我正在第一次创建一个类,我想我已经做了所有的事情来让它运行,但我仍然遇到很多问题,那就是 '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()
【问题讨论】:
-
shuffle 是 card_deck 类的一种方法,您正在尝试在列表中使用它。首先将您的列表转换为 card_deck。
-
我建议不要到处打错,至少。
-
谢谢,我在这里遇到了另一个问题“文件”/Users/user/Desktop/deck_class.py”,第 55 行,在 main hand.append(deck[i]) TypeError: 'type'对象不可下标”
-
@sashkello 感谢您的帮助,它现在可以工作了,但是为什么我没有得到卡名 [
main.card_deck'>, 0, 1, 2] -
因为您需要打印卡片名称,而不是类(例如,在您的类中为它创建一个单独的方法)。当您说要打印类的实例时,您的解释器不知道您要打印名称...