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