我正在創建一個 UNO 游戲。我想我在 Uno、def playGame 和 playTurn 課上有問題。我收到以下錯誤。在 def playGame 中,我試圖檢查牌組或玩家的任何手牌是否為空。如果是,那么游戲就結束了,我們就有了贏家。在 playTurn 中,我通過將卡片發送到函式 canPlay 來檢查玩家手中是否有可玩的卡片。如果有一張可玩的牌,那么玩家會打出這張牌,然后我從手上取出這張牌。
回溯(最近一次呼叫):檔案“c:\Users\yaman\OneDrive\Desktop\uno_game.py”,第 150 行,在 main()
檔案“c:\Users\yaman\OneDrive\Desktop\uno_game.py”,第 147 行,在主 my_game.playGame() 中
檔案“c:\Users\yaman\OneDrive\Desktop\uno_game.py”,第 92 行,在 playGame self.lastPlayedCard=random.choice(self.hand1)
檔案“C:\Python39\lib\random.py”,第 347 行,在選擇回傳 seq[self._randbelow(len(seq))] 型別錯誤:'CollectionOfUnoCards' 型別的物件沒有 len()
uj5u.com熱心網友回復:
您試圖計算 CollectionOfUnoCards 的大小,但程式失敗。在 python 中,您應該宣告自定義__len__方法來呼叫len自定義類上的函式。
嘗試__len__像這樣添加 到 CollectionOfUnoCards
class CollectionOfUnoCards:
def __len__(self):
return len(self.cardlist)
你在這里也有錯誤
random.choice(self.hand1)->random.choice(self.hand1.cardlist),因為您可以在串列中呼叫 random.choice 。for card in self.hand1:->for card in self.hand1.cardlist:self.hand1.remove(play)->self.hand1.cardlist.remove(play)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/396519.html
上一篇:如何過濾字串串列?
