看板 Python 關於我們 聯絡資訊
這個問題我自己也感覺有點奇怪.. 就是我希望產生物件時先不給予變數名, 而是在迴圈內根據我設定的條件再來決定這個物件叫什麼。 因為我想練習寫一隻撲克牌遊戲,所以我定義了一個類別 class card: def __init__(self, suit, number) #花色 self.suit = suit #點數 self.number = number 接下來我需要17張牌(各花色JQKA+一張鬼牌) 所以總共宣告了17個card物件 (JQKA分別用11, 12, 13, 14,花色用0, 1, 2, 3代替) SpadeJack = card(0, 11) SpadeQueen = card(0, 12) . . HeartKing = card(1, 13) . . ClubAce = card(3, 14) (鬼牌另外處理) 我想知道除了這樣一個一個宣告外,有沒有辦法做到: for suit in range(4) for number in range(11-15) 宣告一個沒有名稱的card物件 if suit == 0 : 物件名稱加上Spade 物件的suit屬性設定為0 elif suit == 1 物件名稱加上Heart 物件的suit屬性設定為1 . . if number == 11 : 物件名稱再加上Jack 物件的number設定為11 . . 接下來我就可以直接調用這些card物件來做成我的牌組 抱歉因為我剛開始學程式語言,如果有表達不清的地方還請多包涵 或是有其他更好的設計方式,還請不吝指教 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.124.84
grtfor:用tuple或dict等陣列來處理變數會比較好 03/04 17:03
mikapauli:name = ( 03/04 18:43
mikapauli: 'Spade', 'Heart', 'Diamond', 'Club', 03/04 18:44
mikapauli: '', '', '', '', '', '', '', 03/04 18:44
mikapauli: 'Jack', 'Queen', 'King', 'Ace') 03/04 18:45
mikapauli:for suit in range(4): 03/04 18:45
mikapauli: for number in range(11, 15): 03/04 18:46
mikapauli: exec( 03/04 18:47
mikapauli: name[suit] + 03/04 18:47
mikapauli: name[number] + 03/04 18:48
mikapauli: ' = card(suit, number)') 03/04 18:49
darkgerm:用 dict 是比較好的做法 03/04 23:37