0

我想知道如何退货

cardn

回到

__init___

我的程序的一部分,我可以继续。这是在课堂上。

'''the dealing'''
    while card_count != 2:
        deal = random.randint(1,13)
        self.card_check(deal)
        print(cardn)
        card_count += 1




def card_check(self, card):
        if card == 1:
            cardn = "Ace"
        elif card == 11:
            cardn = "Jack"
        elif card == 12:
            cardn = "Queen"
        elif card == 13:
            cardn = "King"
        return cardn

我想要的只是卡的名称。

4

4 回答 4

1

简单的!写吧

cardn = self.card_check(deal)
于 2013-01-17T13:54:09.913 回答
1

在你的情况下,我看到其他人已经回应了cardn = self.card_check(deal),但card_check()没有做任何事情self。所以它很冷只是功能。如果是方法,那么您可以设置类成员而不是返回值:

def card_check(self, card):
    if card == 1:
        self.cardn = "Ace"
    elif card == 11:
        self.cardn = "Jack"
    elif card == 12:
        self.cardn = "Queen"
    elif card == 13:
        self.cardn = "King"
    else
        self.cardn = str(card)

请注意,cardn它也为其他数字设置,但您可以检查它是否是 2 到 10 之间的整数,如果不是则引发异常。

还可以尝试使用 Python 工具,例如pylint。它们会显示一些警告,并且应该注意self您的方法中没有使用这些警告。

于 2013-01-17T14:05:00.297 回答
1

几点建议。您可以创建一个列表或哈希表,将卡号映射到卡名。

def card_name(index):
    card_names = { 1: "Ace", 11: "Jack" }
    return card_names[index]

您的交易实施(使用 randint)并不正确。它使每次抽奖的概率独立于先前的抽奖。这适用于轮盘赌,但不适用于二十一点。在二十一点中,您可能会用完王牌 :-)。

于 2013-01-17T14:09:26.033 回答
0

不同的方式,

def card_check(x):
   return {
      1  : 'Ace',
      11 : 'Jack',
      12 : 'Queen',
      13 : 'King',
   }[x]


print card_check(1)

输出

Ace
于 2013-01-17T14:35:38.517 回答