作者volleyp (彼德さん)
看板Python
標題[問題] 宣告變數時,有辦法先不給予名稱嗎?
時間Mon Mar 4 16:42:55 2013
這個問題我自己也感覺有點奇怪..
就是我希望產生物件時先不給予變數名,
而是在迴圈內根據我設定的條件再來決定這個物件叫什麼。
因為我想練習寫一隻撲克牌遊戲,所以我定義了一個類別
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