嗨,我真的是一个完全初学者的任何帮助或建议非常感谢我正在尝试研究下面的代码但是当我执行代码时我什么都没得到 我尽我所能,但它给了我很多错误。请仔细看看,任何建议非常感谢你
import random
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
suits = ['Hearts', 'Clubs', 'Spades', 'Diamonds']
class Card:
def c1(self, rank, suit):
self.rank = rank
self.suit = suit
def value(self):
if self.rank in ['J', 'Q', 'K']:
return 10
elif self.rank == 'A':
return 1,11
else:
return int(self.rank)
def c2_(self):
return self.rank + '-' + self.suit
class Deck:
def d1(self):
self.cards = []
for rank in ranks:
for suit in suits:
c = Card(rank, suit)
self.cards.append(c)
def shuffle(self):
random.shuffle(self.cards)
def draw_card(self):
if not self.cards:
raise Exception("No more cards: empty deck!")
card = self.cards.pop()
return card
def d2(self):
cards = []
for c in self.cards:
cards.append(str(c))
return str(cards)
def test2(self):
deck = Deck()
print
print deck
deck.shuffle()
print
print deck
tryss= Deck()
tryss.d1()
tryss.draw_card()
tryss.dshuffle()
tryss.d2()
tryss.test2()
答案 0 :(得分:1)
正如其他人所说,你有一定数量的缩进错误,你将不得不追逐。
你将遇到的主要问题是你没有用任何东西初始化类。如果您将c1和d1函数更改为__init__
,它会将它们初始化为一个类项,然后可以使用self
进行访问。
否则,对于test2
中的打印件,请不要通过执行print(deck)
来打印课程项目,而是使用deck.d2()
打印该值,因为这样可以将卡片串联化甲板。
函数d2
也有一个错误,因为它应该是str(c.c2_())
,因为这是你对卡片名称进行字符串化的功能。
你还有很多东西要从中得到一个二十一点游戏,但至少应该让当前的代码接近功能。如果您对不起作用的内容有清晰的描述,请修改问题以便询问。
答案 1 :(得分:-1)
你的程序有太多问题:
Card
中定义了一个名为c1
的方法,但是用它来表示该类的构造函数。d1
中的Deck
方法也是一个构造函数。所以,我从全球通话中删除了它除此之外,你正在进行print
而没有争论。在这种情况下,您可以print('')
。
这是您的代码,带有适当的缩进,以及print
语句可以与Python2和Python3一起使用。
import random
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
suits = ['Hearts', 'Clubs', 'Spades', 'Diamonds']
class Card:
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def value(self):
if self.rank in ['J', 'Q', 'K']:
return 10
elif self.rank == 'A':
return 1,11
else:
return int(self.rank)
def c2_(self):
return self.rank + '-' + self.suit
class Deck:
def __init__(self):
self.cards = []
for rank in ranks:
for suit in suits:
c = Card(rank, suit)
self.cards.append(c)
def shuffle(self):
random.shuffle(self.cards)
def draw_card(self):
if not self.cards:
raise Exception("No more cards: empty deck!")
card = self.cards.pop()
return card
def d2(self):
cards = []
for c in self.cards:
cards.append(str(c))
return str(cards)
def test2(self):
deck = Deck()
print('')
print(deck)
deck.shuffle()
print('')
print(deck)
if __name__ == '__main__':
tryss= Deck()
tryss.draw_card()
tryss.shuffle()
tryss.d2()
tryss.test2()