[英]Python list doesn't seem to be updating
我是python的新手,正在嘗試創建二十一點。 但是,當我嘗試打印出玩家的手牌時,我遇到了一些困難。
這是我的打(發卡)代碼:
def hit(card, deck):
global money, choice
choice = input("How much would you like to bet?\n")
money -= int(choice)
print("You have decided to bet $" + str(choice))
card = card.drawCard(deck.deck)
card.getPt()
deck.addScore(card)
deck.addCard(card)
c = str(card)
p = str(deck)
print("You have drawn: " + str(c) + "\n")
print("The player has:\n" + str(p) + "\n")
print("Total score:", deck.score)
這是我用於打印卡的代碼:
def __str__(self):
for i in range(0, len(self.deck)):
self.print = self.print + "\n" + str(self.deck[i])
return self.print
我的代碼要做的第一件事是為發牌者和玩家抽兩張牌,效果很好。 但是,在玩家抽出一張牌之后,它就會變得有些古怪。 輸出是這樣的:
The player has drawn Card A
The player has drawn Card B
Total score: number
How much would you like to bet?
number
You have bet number
You have drawn Card B
Player has:
Card A
Card B
Card A
Card B
Card B
當我抽出一張新卡時,該卡不會更改,而是保留我繪制的最后一張卡。 然后,當我打印卡座時,它會同時打印我的舊卡座和新卡座。 但是,分數是正確的,這表明我的名單只有三張卡。 怎么回事,為什么要打印五張卡?
好吧,簡而言之,答案是: 您永遠不會重置Deck.print。 因此,每次調用__str__
它都會不斷累積
但總的來說,可以大大改善此代碼,例如__str__
函數遠非__str__
。 遵循以下原則
return '\n'.join(self.deck)
看起來會好很多。
通常,沒有必要在每個變量前加上“自我”。 如果僅在函數中使用它們。 在大多數情況下,在類方法中,您要么更新對象變量(self.something),要么從函數中返回一些值,但不能同時返回兩者。 當然,可能會有例外,但是在您的情況下,這似乎是規則,而不是例外。
您還應盡可能避免使用全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.