2013-04-22 100 views
-1

好了,在查看了很多关于类的教程视频之后,我仍然无法理解他们对于我需要做的任务。了解Python 3中的类和方法

我需要编写一个基本上做高卡的程序,这意味着我需要2张牌才能面对面,一个是西装和排名冠军。

2-14是秩(11 =插孔,12 =王后,​​13 =王,14 = ACE)

1-4是套装(俱乐部,钻石,红心,黑桃)

这是我到目前为止有什么

class Card: 
     def __init__(self, inRank, inSuit): 
     self.__rank = inRank 
     self.__suit = inSuit 

难道有人只是指着我在正确的方向吗?我正在如何开始这个空白。

+0

用伪代码或英文写下你如何决定哪张卡更好。然后将其翻译成python。 – Patashu 2013-04-22 04:44:12

+0

作为一个方面说明,您的缩进是不正确的(除非它在粘贴错误)。 – 2013-04-22 05:40:45

回答

1

您的类是好的,但我会删除下划线的属性,因为你还没有实现比较对象的任何方法。我将定义一个face_off函数,它将card对象作为参数并返回胜者。如果我理解正确,那么只需比较两张牌的rank属性并返回更高的值。然后将整个东西包装在if __name__ == '__main__'区块中。

你实际上并不甚至不需要类此,该卡可dicttuple,但是如果你想有一个类,那么你可以定义为rich comparison methods类,所以你可以比较对象,而不是属性。然后你可以利用python的内置函数,你的faceoff只能返回max(card_object_one, card_object_two)。这可以在默认情况下使用字典和元组。

1

只是一个快速的一面说明。 Python mangles class and instance variables其名字以两个下划线开头。我建议使用一个下划线(或根本没有)。

回到原来的问题。我的下一步是创建一个方法faceoff,它接受另一个卡实例。这种方法可以返回获胜的牌,或者可以让你知道主叫方是否获胜。

例如:

def faceoff(self, other): 
    # Compare self against other 
    # ... 

    # if self beats other 
     return True 
    return False