Почему мой код python считает, что этот символ больше другого? - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь создать робота, который будет играть в карточную игру "Big 2".

Моя цель состояла в том, чтобы начать играть только в 1 карточную игру. Я пытаюсь проверить это, возвращая True, если число 1 больше, чем число 2, и False, если это не так.

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 выше 2 в RANK_ORDER?

1 Ответ

3 голосов
/ 27 февраля 2020

Поскольку вы не сравниваете то, что, по вашему мнению, делаете, вы сравниваете значение ascii масти a с 1 или 0 на основе логического ответа на вопрос, если b[1] в масти порядок, вы должны сравнить их индексы.

SUIT_ORDER.index(a[1]) > SUIT_ORDER.index(b[1])

и аналогично для сравнения порядка ранга

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...