繁体   English   中英

Python 方法不返回正确的值

[英]Python method doesn't return right value

为了学习如何使用 Python 中的类,我目前正在编写一个纸牌游戏。 我想测试“wert_addieren”方法(这个方法应该是把一张牌的值加到玩家分数上),所以我写了一个简单的测试程序。 但问题是:方法“wert_addieren”唯一一次返回预期结果,即

spieler_punkte = 2

是我改变的时候

返回朋克特

打印(甲板,朋克特)

我希望有人能够帮助我:)

完整代码:

class Kartenstapel(object):
    def __init__(self):
        #Karten Abkürzungen: Kreuz = KR, Pik = PI, Herz = HE, Karo = KA
        self.karten = ["2KR", "2PI", "2HE", "2KA", "3KR", "3PI", "3HE", "3KA", "4KR", "4PI", "4HE", "4KA",
                    "5KR", "5PI", "5HE", "5KA", "6KR", "6PI", "6HE", "6KA", "7KR", "7PI", "7HE", "7KA",
                    "8KR", "8PI", "8HE", "8KA", "9KR", "9PI", "9HE", "9KA", "10KR", "10PI", "10HE", "10KA",
                    "bubeKR", "bubePI", "bubeHE", "bubeKA", "koeniginKR", "koeniginPI", "koeniginHE", "koeniginKA", 
                    "koenigKR", "koenigPI", "koenigHE", "koenigKA", "assKR", "assPI", "assHE", "assKA"]

    def wert_addieren(self, deck, punkte):
        hilf = deck[-1]
        if "2" in hilf:
            punkte += 2
        return punkte

    def karte_ziehen(self, deck):
        deck.append(self.karten[0])
        self.karten.pop(0)
        return self.karten, deck

k = Kartenstapel()
spieler = []
spieler_punkte = 0
k.karte_ziehen(spieler)
k.wert_addieren(spieler, spieler_punkte)
print(spieler, "\n", spieler_punkte)

首先, pop方法也返回弹出的项目,所以你可以这样做

    def karte_ziehen(self, deck):
        deck.append(self.karten.pop(0))
        return self.karten, deck

其次,您从函数返回值但不使用它们。 所以做类似的事情 -

k = Kartenstapel()
spieler = []
spieler_punkte = 0
karten, spieler = k.karte_ziehen(spieler)
spieler_punkte = k.wert_addieren(spieler, spieler_punkte)
print(spieler, "\n", spieler_punkte)

我对返回值使用了相同的变量。 如果需要,您可以使用不同的。

当您执行此操作时k.wert_addieren(spieler, spieler_punkte)您正在将spieler_punkte的值更改为 2,因此您并没有真正使用 return,因此您并不需要它。 如果您已经在更改参数的值,则您实际上不需要返回任何内容,除非它与参数无关。例如,在牌组中添加额外卡片的 function 不需要返回任何内容,但是function 给我们一副牌中所有牌的总价值将返回一个特定的值,您将给另一个变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM