簡體   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