我正在撰寫一個腳本來玩二十一點,但無法解決我今晚遇到的缺陷。基本上,我試圖遍歷類中存在的串列物件。我總是可以讓它列印第一張卡片(即紅心五),但不能列印我的測驗用例中的其余兩張。
這是相關的代碼:
class Card:
def __init__(self,suit,rank):
self.suit = suit
self.rank = rank
def __str__(self):
return self.rank " of " self.suit
class Play_Pile:
def __init__(self,pile_owner):
self.pile_owner = pile_owner
self.pile_cards = []
self.pile_state = "NORM"
def add_card(self,new_card):
self.pile_cards.append(new_card)
#THE FIRST IF STATEMENT AND ITS FOR LOOP ARE DEFECTIVE IN THE CONTEXT OF THE TEST CASE
def __str__(self):
if self.pile_owner == "HUMAN":
for card in self.pile_cards:
return card.rank " of " card.suit "\n"
elif self.pile_owner == "COMPY":
return self.pile_cards[0].rank " of " self.pile_cards[0].suit
這是 Unittest 測驗用例:
#module references
import unittest
import blackjack
class PlayPile_Display_Test(unittest.TestCase):
playpile_instance = blackjack.Play_Pile("HUMAN")
card_1 = blackjack.Card("Hearts", "Five")
card_2 = blackjack.Card("Spades", "Five")
card_3 = blackjack.Card("Spades", "Ace")
playpile_instance.add_card(card_1)
playpile_instance.add_card(card_2)
playpile_instance.add_card(card_3)
print(playpile_instance)
if __name__ == '__main__':
unittest.main(verbosity = 2)
讓我知道我對串列的遺漏以及如何在類中遍歷它們?
uj5u.com熱心網友回復:
您遍歷串列,但立即回傳值。您需要累加字串,然后回傳結果。
str = ""
for card in self.pile_cards:
str = card.rank " of " card.suit "\n"
return str
uj5u.com熱心網友回復:
你需要累積你為每張卡片構建的字串,但也使用Card.__str__你定義的,而不是再次撰寫卡片表示邏輯(X of Y)
def __str__(self):
if self.pile_owner == "HUMAN":
result = ""
for card in self.pile_cards:
result = str(card) "\n"
return result
elif self.pile_owner == "COMPY":
return str(self.pile_cards[0])
你也可以很好地做到這"\n".join一點
def __str__(self):
if self.pile_owner == "HUMAN":
return "\n".join(map(str, self.pile_cards))
elif self.pile_owner == "COMPY":
return str(self.pile_cards[0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311476.html
