【问题标题】:Blackjack Python二十一点蟒蛇
【发布时间】:2016-04-15 04:02:58
【问题描述】:

我试图弄清楚如何将 tjqk 的值设置为 int10 值。有人可以解释我哪里出错了吗?

class Card:

    def __init__(self, value , suit):
            self.value = value
            self.suit = suit

    def __repr__(self):
        return "The " + self.value + " of " + self.suit

    def intValue(self):
        if int(self.value) > 2 or int(self.value) < 9:
            return self.value
        elif str(self.value) == 'a':
            return 1
        elif str(self.value) == 'j' or str(self.value) == 'q' or str(self.value) == 'k' or str(self.value) == 't':
            return 10

【问题讨论】:

  • &gt;2&lt;9 省略了 2 和 10,我很确定它们是有效的卡片。无论如何,您必须先告诉我们出了什么问题,然后我们才能考虑哪里您出了问题。
  • 我猜最后一行的 t 是 10...?
  • IMO 没有理由为此创建一个类,而是使用一个元组...(value, suit)。然后是dict{'a': 1, 'j': 10, 'q': 10, 'k': 10, 't': 10}
  • 如果self.value 类似于'j''q' 等,则不能尝试执行int(self.value)。您必须检查它是否为非数字之前 试图将其传递给int()。否则你会得到一个错误,正如你所期望的(你期望int('k') 做什么?)
  • 一张 ace 的值是 1 还是 11,取决于总数?

标签: python class


【解决方案1】:

虽然我同意 cmets 关于使用字典来表示值的观点,但让我们来解决您的问题。主要是保持简单并记住数据的类型 (str),而不是在不需要时随意强加 str()int() 调用:

class Card:

    def __init__(self, value, suit):
        self.value = value
        self.suit = suit

    def __repr__(self):
        return "The {} of {}".format(self.value, self.suit)

    def intValue(self):
        if self.value.isdigit():
            return int(self.value)
        elif self.value == 'a':
            return 1
        else:
            return 10

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 2018-07-16
    • 2010-10-27
    • 2021-10-08
    • 1970-01-01
    • 2010-10-21
    • 2016-05-28
    • 2014-08-01
    • 2021-06-28
    相关资源
    最近更新 更多