मैं एक रोबोट बनाने की कोशिश कर रहा हूं जो "बिग 2" कार्ड गेम खेलता है।
मेरा लक्ष्य इसे केवल 1 कार्ड प्ले खेलने के साथ शुरू करना था। मैं इसका परीक्षण करने की कोशिश कर रहा हूं, अगर नंबर 1 नंबर 2 से बड़ा है और False
है तो True
लौटा रहा है।
RANK_ORDER = '34567890JQKA2'
SUIT_ORDER = 'DCHS'
def is_higher(card1, card2):
a = list(card1)
b = list(card2)
if a[0] == b[0]:
if a[1] > b[1] in SUIT_ORDER:
return True
elif a[1] < b[1] in SUIT_ORDER:
return False
elif a[1] > b[1] in SUIT_ORDER:
return True
elif a[1] < b[1] in SUIT_ORDER:
return False
elif a[1] == b[1]: #problem may be from here downwards
if a[0] > b[0] in RANK_ORDER:
return True
elif a[0] < b[0] in RANK_ORDER:
return False
if __name__ == '__main__':
print(is_higher('8D', '9S'))
print(is_higher('2S', '2D'))
print(is_higher('3H', '2H')) #this has a problem
print(is_higher('QS', 'JS'))
print(is_higher('AD', '2S'))
मैं अपने लक्ष्य में कुछ हद तक सफल रहा हूं, हालांकि, यह तीसरे उदाहरण के लिए True
क्यों लौटाता है, भले ही 3
RANK_ORDER
में 2
से अधिक है?
1 उत्तर
क्योंकि आप जो सोचते हैं कि आप कर रहे हैं उसकी तुलना नहीं कर रहे हैं, आप बूलियन उत्तर के आधार पर a
के सूट के ascii मान की तुलना या तो 1 या 0 से कर रहे हैं यदि b[1]
में है सूट क्रम, आपको उनके सूचकांकों की तुलना करनी चाहिए।
SUIT_ORDER.index(a[1]) > SUIT_ORDER.index(b[1])
और इसी तरह रैंक ऑर्डर तुलना के लिए
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
a=list(card1)
अनावश्यक है। आप एक्सेस करने के लिए इंडेक्स वैल्यू का उपयोग कर सकते हैं, उदा।card1[0]
पहले सूची में परिवर्तित किए बिना।