مقایسه کارت ها در زبان پایتون به چه صورت انجام میگیرد ؟
مقایسه کارت ها در زبان پایتون به چه صورت انجام میگیرد ؟
مقایسه کارت ها در زبان پایتون به چه صورت انجام میگیرد ؟
براي انواع دادهاي قبلی عملگرهاي شرطی (== ، < ، > و غیره) وجود دارد که مقادیر را مقایسه میکنند و مشخص میکنند که چه زمان یکی نسبت به دیگري بزرگتر، کوچکتر و یـا مسـاوي اسـت. براي انواع دادهاي کاربر-تعریف میتوانیم با ارائۀ متدي به نام __cmp __رفتار عملگرهاي پیشسـاخته را لغو کنیم. طبق قرارداد، __cmp __دو پارامتر self و othr را میگیرد و اگر شیء اول بزرگتر باشد 1 ،در صورتی که شیء دوم بزرگتر باشد 1 -و در حالتی که برابر باشند 0 را برمیگرداند. برخی از انواع دادهاي کاملاً به صورت متوالی هستند، یعنـی شـما مـیتوانیـد هـر دو عضـوي را مقایسه کنید و بگویید کدام یک بزرگتر است. براي مثال اعداد صحیح و اعداد اعشاري کاملاً متوالینـد. برخی مجموعهها نامتوالیند، به این معنی که براي تعیین بزرگتري عضوي نسبت به دیگري راه معینی وجود ندارد. مثلاً میوهها نامتوالیند، به همین دلیل شما نمیتوانید سیب یا پرتقال را از نظر اندازه با هـم مقایسه کنید. مجموعۀ کارتهاي بازي پارهمرتب هستند، یعنی برخی اوقـات مـیتوانیـد کـارتهـا را بـا هـم مقایسه کنید و گاهی هم نمیتوانید. براي مثال، میدانید 3 از Clubs بزرگتر از 2 از Clubs است و 3 از Diamonds بیشتر از 3 از Clubs میباشـد. امـا کـدام یـک بهتـر اسـت، 3 از Clubs یـا 2 از Diamonds؟ یکی از لحاظ عددي بزرگتر است و دیگري خال با ارزشتري دارد. به منظور قیاسپذیر ساختن کارتها باید تصمیم بگیرید که کدام یک مهـمتـر اسـت، رتبـه یـا خال. در حقیقت این انتخاب، اختیاري و قراردادي است. جهت انجام این انتخاب ما فرض میکنـیم کـه خال مهمتر است، زیرا یک دست کارت نو بر اساس خالها مرتب شدهاند، مثلاً مجموعـۀ Clubsهـا در کنار هم، پس از آن مجموعۀ Diamondsها و به همین ترتیب. با این قرارداد میتوانیم __cmp __را بنویسیم:
def __cmp__(self, other):
# check the suits
if self.suit > other.suit: return 1
if self.suit < other.suit: return -1
# suits are the same… check ranks
if self.rank > other.rank: return 1
if self.rank < other.rank: return -1
# ranks are the same… it’s a tie
return 0
در این مرتبسازي، Aceها (1ها) داراي ارزش کمتري نسبت به 2ها هستند
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید