Форум сайта python.su
# Карты 2.0 # Демонстрирует расширение класса через наследование class Card(object): """ Одна игральная карта. """ RANKS = ["А", "2", "З", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "К"] SUITS = ["c", "d", "h", "s"] def __init__ (self, rank, suit): self.rank = rank self.suit = suit def __str__(self): rep = self.rank + self.suit return rep class Hand(object): """'Рука':набор карт на руках у одного игрока.""" def __init__(self): self.cards = [] def __str__(self): if self.cards: rep = "" for card in self.cards: rep += str(card) + "\t" else: rep = "<пусто>" return rep def clear(self): self.cards = [] def add(self, card): self.cards.append(card) def give(self, card, other_hand): self.cards.remove(card) other_hand.add(card) class Deck(Hand): """ Колода игральных карт""" def populate(self): self.cards = [] for suit in Card.SUITS: for rank in Card.RANKS: self.add(Card(rank, suit)) def shuffle(self): import random random.shuffle(self,cards) def deal(self, hands, per_hand = 1): for rounds in range(per_hand): for hand in hands: if self.cards : top_card = self.cards[0] self.give(top_card, hand) else: print("He могу больше сдавать: карты закончились!") # основная часть deckl = Deck() print("Coздaнa новая колода.") print("Boт эта колода:") print(deckl) deckl.shuffle() print( "\nКолода перемешана.") print("Boт как она выглядит теперь:") print(deckl) my_hand = Hand() your_hand = Hand() hands = [my_hand, your_hand] deckl.deal(hands, per_hand = 5) print("\nMнe и вам на руки роздано по 5 карт.") print( "У меня на руках:") print(my_hand) print("У вас на руках:") print(your_hand) print("Ocтaлocь в колоде:") print(deckl) deckl.clear() print("\nКолода очищена.") print("Boт как она выглядит теперь:", deckl) input("\n\nHaжмитe Enter. чтобы выйти.") [code python][/code]
Офлайн
Поправил всё. Выводит колоду в консоль.
#!/usr/bin/env python3 # Карты 2.0 # Демонстрирует расширение класса через наследование class Card(object): """ Одна игральная карта. """ RANKS = ["А", "2", "З", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "К"] SUITS = ["c", "d", "h", "s"] def __init__ (self, rank, suit): self.rank = rank self.suit = suit def __str__(self): rep = self.rank + self.suit return rep class Hand(object): """'Рука':набор карт на руках у одного игрока.""" def __init__(self): self.cards = [] def __str__(self): if self.cards: rep = "" for card in self.cards: rep += str(card) + "\t" else: rep = "<пусто>" return rep def clear(self): self.cards = [] def add(self, card): self.cards.append(card) def give(self, card, other_hand): self.cards.remove(card) other_hand.add(card) class Deck(Hand): """ Колода игральных карт""" def populate(self): self.cards = [] for suit in Card.SUITS: for rank in Card.RANKS: self.add(Card(rank, suit)) def shuffle(self): import random random.shuffle(self.cards) def deal(self, hands, per_hand = 1): for rounds in range(per_hand): for hand in hands: if self.cards : top_card = self.cards[0] self.give(top_card, hand) else: print("He могу больше сдавать: карты закончились!") # основная часть deckl = Deck() deckl.populate() print("Coздaнa новая колода.") print("Boт эта колода:") print(deckl) deckl.shuffle() print( "\nКолода перемешана.") print("Boт как она выглядит теперь:") print(deckl) my_hand = Hand() your_hand = Hand() hands = [my_hand, your_hand] deckl.deal(hands, per_hand = 5) print("\nMнe и вам на руки роздано по 5 карт.") print( "У меня на руках:") print(my_hand) print("У вас на руках:") print(your_hand) print("Ocтaлocь в колоде:") print(deckl) deckl.clear() print("\nКолода очищена.") print("Boт как она выглядит теперь:", deckl) input("\n\nHaжмитe Enter. чтобы выйти.")
Офлайн
py.user.nextспасибо огромное но я не понял где ошибка. Сравнил два кода они один в один только ваш работает, а мой пишет ошибку. Можете пожалуйста мен объяснить в чем у меня была проблема?
Поправил всё. Выводит колоду в консоль.
Офлайн
Для сравнения файлов используй программу diff
https://ru.wikipedia.org/wiki/Diff
[guest@localhost t]$ diff -u neznayka.txt pyusernext.txt
--- neznayka.txt 2022-04-07 07:57:53.353099912 +1100
+++ pyusernext.txt 2022-04-07 07:57:02.171201268 +1100
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
# Карты 2.0
# Демонстрирует расширение класса через наследование
class Card(object):
@@ -10,7 +12,7 @@
def __str__(self):
rep = self.rank + self.suit
return rep
-
+
class Hand(object):
"""'Рука':набор карт на руках у одного игрока."""
def __init__(self):
@@ -30,6 +32,7 @@
def give(self, card, other_hand):
self.cards.remove(card)
other_hand.add(card)
+
class Deck(Hand):
""" Колода игральных карт"""
def populate(self):
@@ -39,7 +42,7 @@
self.add(Card(rank, suit))
def shuffle(self):
import random
- random.shuffle(self,cards)
+ random.shuffle(self.cards)
def deal(self, hands, per_hand = 1):
for rounds in range(per_hand):
for hand in hands:
@@ -48,8 +51,10 @@
self.give(top_card, hand)
else:
print("He могу больше сдавать: карты закончились!")
+
# основная часть
deckl = Deck()
+deckl.populate()
print("Coздaнa новая колода.")
print("Boт эта колода:")
print(deckl)
[guest@localhost t]$
Офлайн
py.user.nextспасибо чутка разобрался но где скачать не нашёл пришлось онлайн смотреть. Учится учится и еще раз учится))
Для сравнения файлов используй программу diffhttps://ru.wikipedia.org/wiki/Diff
Офлайн
Ne_znay_kaТебе надо поставить Linux, там все эти программы есть. Уже по сорок лет им и даже больше.
но где скачать не нашёл
Отредактировано py.user.next (Апрель 8, 2022 07:52:05)
Офлайн
py.user.nextспасибо скачал PyCharm помогло стало удобней писать коды. Вы говорите что все программы есть на Linux, а на Windows где-то возможно посмотреть?
Офлайн
Ne_znay_kaНа Windows этих программ нет, потому что Windows - система для тупых, которые ничего не знают. А Linux - это система для умных, поэтому там много программ для умных. Соответственно, есть много программ уже десятки лет, о которых ты даже не подозреваешь. Поэтому-то ты и не можешь два текстовых файла сравнить между собой. У тебя просто в Windows нет программы для этого. Из-за этого тебе приходится файлы глазами сравнивать. Если файлы будут большими, ты будешь сравнивать их целый день, а я их передам в программу и они сравнятся за секунду. А целый день я потрачу куда-нибудь на более полезные дела.
Вы говорите что все программы есть на Linux, а на Windows где-то возможно посмотреть?
Отредактировано py.user.next (Апрель 13, 2022 15:42:36)
Офлайн
py.user.nextпопробую) но это будет еще то испытание)))
Офлайн
Ne_znay_kaа для Linux и чтобы на нем работать мне 50 гб хватит?
Офлайн