无法执行黑杰克代码Python

2024-10-04 09:22:08 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我真的是一个完全初学者任何帮助或建议是非常感谢我正在努力学习下面的代码,但当我执行代码,我什么都没有得到 我尽我所能,但它给了我很多错误。请原谅看看有什么建议谢谢

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()

Tags: inselfforreturndefcard建议cards
2条回答

正如其他人所说,你有相当数量的缩进错误,那些你将不得不追查。你知道吗

您将遇到的主要问题是没有用任何东西初始化类。如果将c1和d1函数更改为__init__,它将初始化它们,使之成为一个类项,然后可以使用self访问。你知道吗

否则,对于test2中的打印,不要通过执行print(deck)来打印类项,而是使用deck.d2()来打印值,因为存在这种情况可以将卡片组中的卡片串化。你知道吗

函数d2也有一个错误,因为它应该是str(c.c2_()),因为这是将卡名字符串化的函数。你知道吗

你仍然有很多东西要从中得到一个21点游戏,但这至少应该让当前的代码接近功能。如果你对不起作用的东西有一个清晰的描述,那么请修改问题来问这个问题。你知道吗

你的程序有太多问题:

  • 缩进
  • 某些实例变量作为参数传递给同一类中的其他方法。你知道吗
  • Card中,您定义了一个名为c1的方法,但它意味着类的构造函数。你知道吗
  • 方法Deck中的d1也是一个构造函数。所以,我把它从你的全球通话中删除了
  • 要打印对象,必须定义其字符串表示形式。看How to create a custom string representation for a class object?

除此之外,你做的print没有任何争论。在这种情况下,您只需执行print('')。你知道吗

这是您的代码,带有适当的缩进,以及用于Python2和Python3的print语句。你知道吗

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()

相关问题 更多 >