[問題] 宣告變數時,有辦法先不給予名稱嗎?

看板Python作者 (彼德さん)時間12年前 (2013/03/04 16:42), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串1/3 (看更多)
這個問題我自己也感覺有點奇怪.. 就是我希望產生物件時先不給予變數名, 而是在迴圈內根據我設定的條件再來決定這個物件叫什麼。 因為我想練習寫一隻撲克牌遊戲,所以我定義了一個類別 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

03/04 17:03, , 1F
用tuple或dict等陣列來處理變數會比較好
03/04 17:03, 1F

03/04 18:43, , 2F
name = (
03/04 18:43, 2F

03/04 18:44, , 3F
'Spade', 'Heart', 'Diamond', 'Club',
03/04 18:44, 3F

03/04 18:44, , 4F
'', '', '', '', '', '', '',
03/04 18:44, 4F

03/04 18:45, , 5F
'Jack', 'Queen', 'King', 'Ace')
03/04 18:45, 5F

03/04 18:45, , 6F
for suit in range(4):
03/04 18:45, 6F

03/04 18:46, , 7F
for number in range(11, 15):
03/04 18:46, 7F

03/04 18:47, , 8F
exec(
03/04 18:47, 8F

03/04 18:47, , 9F
name[suit] +
03/04 18:47, 9F

03/04 18:48, , 10F
name[number] +
03/04 18:48, 10F

03/04 18:49, , 11F
' = card(suit, number)')
03/04 18:49, 11F

03/04 23:37, , 12F
用 dict 是比較好的做法
03/04 23:37, 12F
文章代碼(AID): #1HD5wIB6 (Python)
文章代碼(AID): #1HD5wIB6 (Python)