作者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
1F:推 grtfor:用tuple或dict等阵列来处理变数会比较好 03/04 17:03
2F:推 mikapauli:name = ( 03/04 18:43
3F:→ mikapauli: 'Spade', 'Heart', 'Diamond', 'Club', 03/04 18:44
4F:→ mikapauli: '', '', '', '', '', '', '', 03/04 18:44
5F:→ mikapauli: 'Jack', 'Queen', 'King', 'Ace') 03/04 18:45
6F:→ mikapauli:for suit in range(4): 03/04 18:45
7F:→ mikapauli: for number in range(11, 15): 03/04 18:46
8F:→ mikapauli: exec( 03/04 18:47
9F:→ mikapauli: name[suit] + 03/04 18:47
10F:→ mikapauli: name[number] + 03/04 18:48
11F:→ mikapauli: ' = card(suit, number)') 03/04 18:49
12F:推 darkgerm:用 dict 是比较好的做法 03/04 23:37