Python 从函数返回值

Python 从函数返回值,python,return,Python,Return,我想知道如何返回 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): i

我想知道如何返回

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
我只想要卡片的名字。

简单!只要写

cardn = self.card_check(deal)
轻松点!只要写

cardn = self.card_check(deal)

在您的情况下,我看到其他人的响应是
cardn=self.card\u check(deal)
,但是
card\u 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工具,如。它们显示了一些警告,并且应该注意,您的方法中没有使用
self

在您的情况下,我看到其他人的响应是
cardn=self.card\u check(deal)
,但是
card\u 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工具,如。它们显示了一些警告,并且应该注意,您的方法中没有使用
self

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

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

您的交易实现(使用randint)并不正确。它使每次抽签的概率独立于以前的抽签。这适用于轮盘赌,但不适用于21点。在21点游戏中,你可能会用完所有的ACE:-)。

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

def card_name(index):
    card_names = { 1: "Ace", 11: "Jack" }
    return card_names[index]
您的交易实现(使用randint)并不正确。它使每次抽签的概率独立于以前的抽签。这适用于轮盘赌,但不适用于21点。在21点游戏中,您可能会用完ACE:-)。

不同的方式

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


print card_check(1)
输出

Ace
不同的方式,

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


print card_check(1)
输出

Ace

你不需要合适的词语,你需要一个基本的。代码应该是
cardn=self.card\u check(deal)
你不需要正确的单词,你需要一个基本的。代码应该是
cardn=self.card\u check(deal)
-\u-:(头脑空白抱歉。我标记了这个问题,所以希望版主能记下来。非常愚蠢的问题:我-\u-:(头脑空白抱歉。我标记了这个问题,所以希望版主能记下来。非常愚蠢的问题:是的……我只是有点胡闹:)但我一定会解决这个问题,并确保不添加重复卡。谢谢:0@ReallyGoodPie最好的方法是在程序开始时创建一张牌组中所有牌的列表。然后每次你想要交易时,都创建一份该列表的副本(
mycopy=list(mydeck)
),使用洗牌,然后通过调用
mycopy.pop()
)来处理卡片。亲爱的,我喜欢你如何从最愚蠢的问题开始,然后获得大量的技巧和窍门来改进你的程序^ ^并学习20个新东西!这就是为什么我喜欢堆栈溢出:是的……我只是有点胡闹:)但我肯定会解决这个问题,并确保没有重复卡添加。谢谢你:0@ReallyGoodPie最好的方法是在程序开始时创建一个卡片组中所有卡片的列表。然后,每次你想发牌的时候,创建一份名单的副本(
mycopy=list(mydeck)
),用洗牌,然后通过调用
mycopy.pop()
)发牌。亲爱的,我喜欢你如何从最愚蠢的问题开始,然后获得大量的提示和技巧,让你的程序更好,并学习20个新东西!这就是为什么我喜欢堆栈溢出:D