2013-04-22 3 views
-1

Хорошо, после просмотра большого количества обучающих видеороликов о классах мне все еще трудно понять их для этого задания, которое я должен сделать.Понимание классов и методов в Python 3

Мне нужно написать программу, которая по существу делает высокую карту, что означает, что мне нужно 2 карты, чтобы они были в стороне, и один из них был победителем в костюмах и ранжировании.

2-14 быть ранга (11 = джек, 12 = Королева, 13 = король, 14 = ас)

1-4 будучи костюм (клубы, алмазы, сердца, лопаты)

это что у меня есть до сих пор

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

Может ли кто-нибудь просто указать мне в правильном направлении здесь? Я рисую пробелы о том, как начать это.

+0

Запишите, на псевдокоде или английском языке, как вы решаете, какая из двух карт лучше. Затем переведите его в python. – Patashu

+0

В качестве побочного примечания ваш отступ неправилен (если только его ошибка в пасте). –

ответ

1

Ваш класс хорошо, хотя я бы удалить подчеркивание в атрибутах, так как вы не выполнили какие-либо методы для сравнения объектов. Я бы определил функцию face_off, которая принимает в качестве аргументов card объектов и возвращает победителя. Если я правильно понял, просто сравните атрибут rank двух карт и верните его выше. Затем заверните все это в блок if __name__ == '__main__'.

Вы на самом деле не нужно даже классы для этого, карты могут быть dict или tuple, однако если вы хотите класс, то вы могли бы определить 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 
Смежные вопросы