2013-04-22 98 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