letters = {1:'A', 11:'J', 12:'Q', 13:'K'}
if self.rank in letters:
rank_show = self.rank
else:
rank_show = self.rank
Вы забыли изменить значение show: вы делаете то же самое в обеих ветках. Вместо этого ...
if self.rank in letters:
rank_show = letters[self.rank]
Еще лучше, убедитесь, что ваше возвращаемое значение имеет согласованный тип: просто сделайте их всеми символами:
rank_char = " A23456789TJQK" # 'T' for 10 is common for consistent formatting
rank_show = rank_char[self.rank]
Обратите внимание на отсутствие 'if ' заявление; вы просто индексируете список значений. Если вы хотите включить «10» вместо «T», вы можете использовать вместо этого список строк:
rank_char = ["", "A", "2", ... "10", "J", "Q", "K"]