Итак, я снова застрял на проблеме новичка: D
Я пытаюсь объединить текстовую игру "лови рыбу" с компьютером.
Хорошо, так что 1 карта на самом деле является кортежем элементов из двух списков.
suits = ['Clubs', 'Diamonds', 'Spade', 'Hearts']
ranks = [None, 'ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'jack', 'queen', 'king']
Затем это добавляется в колоду, перетасовывается и еще много чего, а затем раздается в руки. (я думаю, что получил большую часть из книги thinkpython. Много узнал о структуре классов и наследовании в процессе.)
Так что одна рука может выглядеть вот так
['Clubs 2', 'Diamonds king', 'Diamonds 2', 'Spades 2', 'Hearts 2']
Как видите, эта рука содержит четыре одинаковых ранга, так что это 1 очко для игрока.
Но как я могу проверить, содержит ли рука четыре экземпляра какого-либо предмета в списке рангов?
Нужно ли перебирать каждый элемент в списке или есть простой и понятный способ?
EDIT
Большое спасибо за все ответы, ребята. : D
Но я получаю ошибку атрибута, когда пытаюсь использовать «split» для предметов в руке.
Думаю, мне следовало опубликовать больше кода, который я использую.
Полный код и обратная связь здесь
http://pastebin.com/TwHkrbED
Что-то не так с тем, как методы определены в Карте?
Я часами бродил, пытаясь заставить его работать, но не повезло.
EDIT2
Внесены некоторые изменения в часть, генерирующую колоду. Теперь вся колода представляет собой список кортежей и намного меньше кода.
thedeck=[]
class Deckofcards:
suits = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
ranks = ['Ace', '2', '3', '4', '5',
'6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
def __init__(self):
for i in self.suits:
for a in self.ranks:
thedeck.append((i, a))
Похоже, что другой путь был слишком сложным, но не знаю. Завтра посмотрю, как будут добавляться реальные части игры.