Найти - Пользователи
Полная версия: помогите пожалуйста пишет ошибку в def shuffle(self): но исправление не помогает
Начало » Python для новичков » помогите пожалуйста пишет ошибку в def shuffle(self): но исправление не помогает
1 2
Ne_znay_ka
 # Карты 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]
py.user.next
Поправил всё. Выводит колоду в консоль.
  
#!/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. чтобы выйти.")
Ne_znay_ka
py.user.next
Поправил всё. Выводит колоду в консоль.
спасибо огромное но я не понял где ошибка. Сравнил два кода они один в один только ваш работает, а мой пишет ошибку. Можете пожалуйста мен объяснить в чем у меня была проблема?
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]$
Ne_znay_ka

py.user.next
Для сравнения файлов используй программу diffhttps://ru.wikipedia.org/wiki/Diff
спасибо чутка разобрался но где скачать не нашёл пришлось онлайн смотреть. Учится учится и еще раз учится))
py.user.next
Ne_znay_ka
но где скачать не нашёл
Тебе надо поставить Linux, там все эти программы есть. Уже по сорок лет им и даже больше.

Для винды такие программы ставятся в платформу msys. Ставишь сначала msys, а потом в неё устанавливаешь программы эти в виде пакетов diffutils и так далее. Дальше они становятся доступны в командной строке Windows.

Но лучше поставь Linux второй системой, чтобы у тебя при загрузке компьютера был выбор, в какую систему загрузиться - в Windows или в Linux. Не ставь Linux на виртуалку. Она хоть и работает через виртуалку, но весь её потенциал раскрывается тогда, когда ни капли этой дерьмовой винды нет в оперативной памяти и она не грузит процессор своей очередной херотнёй какой-нибудь типа индексирования файлов на диске для их более быстрого поиска или журналов событий, которые нахер не упали никогда.
Ne_znay_ka
py.user.next
спасибо скачал PyCharm помогло стало удобней писать коды. Вы говорите что все программы есть на Linux, а на Windows где-то возможно посмотреть?
py.user.next
Ne_znay_ka
Вы говорите что все программы есть на Linux, а на Windows где-то возможно посмотреть?
На Windows этих программ нет, потому что Windows - система для тупых, которые ничего не знают. А Linux - это система для умных, поэтому там много программ для умных. Соответственно, есть много программ уже десятки лет, о которых ты даже не подозреваешь. Поэтому-то ты и не можешь два текстовых файла сравнить между собой. У тебя просто в Windows нет программы для этого. Из-за этого тебе приходится файлы глазами сравнивать. Если файлы будут большими, ты будешь сравнивать их целый день, а я их передам в программу и они сравнятся за секунду. А целый день я потрачу куда-нибудь на более полезные дела.

Поэтому я тебе и говорю, чтобы ты себе Linux поставил. Linux экономит время и ты гораздо более эффективен, больше дел можешь проделать. А в Windows ты можешь только в игры играть, потому что больше она ни для чего не приспособлена.
Ne_znay_ka
py.user.next
попробую) но это будет еще то испытание)))
Ne_znay_ka
Ne_znay_ka
а для Linux и чтобы на нем работать мне 50 гб хватит?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB