[英]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.