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

看板Python作者 (←這人是超級笨蛋)時間12年前 (2013/03/04 17:02), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《volleyp (彼德さん)》之銘言: : class card: : def __init__(self, suit, number) : #花色 : self.suit = suit : #點數 : self.number = number : 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物件來做成我的牌組 : 抱歉因為我剛開始學程式語言,如果有表達不清的地方還請多包涵 : 或是有其他更好的設計方式,還請不吝指教 謝謝! 有是有, 不過這不是最好的方式 比較好的做法是把你的所有牌組合成一個 array (其實我個人會用 dict, 不過沒差) 結構像這樣 deck = [ [...] # 鬼牌 [0, 1, 2, 3 ... 13], # 黑桃 [0, 1, 2, 3 ... 13], # 紅心 [0, 1, 2, 3 ... 13], # 方塊 [0, 1, 2, 3 ... 13], # 梅花 ] 這樣你就可以這樣取用 deck[1][5] # 黑桃 5 再厲害一點 SPADE = 1 HEART = 2 DIAMOND = 3 CLUB = 4 ACE = 1 JACK = 11 QUEEN = 12 KING = 13 deck[HEART][QUEEN] # 紅心 Q deck[CLUB][3] # 梅花 3 初始化的方法也很簡單 deck = [] # append 鬼牌 for suit_id in range(4): # 花色 suit = [] suit.append(None) for rank_id in range(1, 14): card = Card(suit_id, rank_id) suit.append(card) deck.append(suit) 這樣比較容易懂, 也比較容易整理你的牌(的物件) 注意我故意先放鬼牌再放花色, 然後每個花色最前面有一個 None 這是為了要讓你 Card 物件裡的花色/牌張編號與 list 的 index 一致 -- 有興趣的人可以想想看他本來的方法要怎麼實現XD -- "問おう、貴方が私のマスターか?" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.47.18 ※ 編輯: uranusjr 來自: 220.133.47.18 (03/04 17:05)

03/04 18:21, , 1F
我今天就在做他那種事,要推坑嗎XD
03/04 18:21, 1F

03/04 18:26, , 2F
等等,改變數名稱做得到嗎?不就等於改dict的key?
03/04 18:26, 2F

03/04 18:27, , 3F
我只能想到新增一個值相同的變數之後刪掉原本的。
03/04 18:27, 3F

03/04 18:29, , 4F
不需要改變數名吧, 只要增加就好了不是嗎 @@
03/04 18:29, 4F

03/04 18:31, , 5F
對耶,原本的繼續在迴圈用,我以為會多一大堆冗變數XD
03/04 18:31, 5F

03/04 18:32, , 6F
我也比較習慣用u大的方式做 XD
03/04 18:32, 6F
文章代碼(AID): #1HD6CXSL (Python)
文章代碼(AID): #1HD6CXSL (Python)