Apr-02-2024, 02:25 PM
Hello again,
I know what I want. I know the algorithm. But I got confused writing my intention in python :(
There are cards, values, colours, complete decks, working print-method - all fine. Also, I know how to shuffle (tested it with a len(10)-list in another playground)
But I got aware, that I dont really understand whats going on in classes, methods and return values. I fumbled a little bit, tried this and that but found no solution. It would be great, if somebody can explain it to me (or showing a link to a site where it's explained) where exactly I got lost...
I tried to copy the output in the comments (line 49-52), hope that is ok? The method seems to be fine, producing no errors (until I try to print the "new" Deck2
There's a text, too. Are these sentences correct and sensible or confused blahblah?
Sincerely & thanks in advance,
HrAyas
I know what I want. I know the algorithm. But I got confused writing my intention in python :(
There are cards, values, colours, complete decks, working print-method - all fine. Also, I know how to shuffle (tested it with a len(10)-list in another playground)
But I got aware, that I dont really understand whats going on in classes, methods and return values. I fumbled a little bit, tried this and that but found no solution. It would be great, if somebody can explain it to me (or showing a link to a site where it's explained) where exactly I got lost...
I tried to copy the output in the comments (line 49-52), hope that is ok? The method seems to be fine, producing no errors (until I try to print the "new" Deck2
There's a text, too. Are these sentences correct and sensible or confused blahblah?
Sincerely & thanks in advance,
HrAyas
''' Creates a Class named "Card" with two attributes: colour: Kreuz(3), Pik(2), Herz(1), Karo(0) value: König 13, Dame 12, Bube 11, 10, 9, ..., 2, As (1) ''' class Card: #1st attributs colourList = ["Karo", "Herz", "Pik", "Kreuz"] valuelist = ["nul", "As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Bube", "Dame", "König"] #2nd methods def __init__(self, colour = 0, value = 1): self.colour = colour self.value = value def __str__(self): return f'{self.colourList[self.colour]} {self.valuelist[self.value]}' '''Now a complete set of 52cards with own methods''' class Deck: '''create with a nested for-loop 4*13 = 52 cards''' def __init__(self): self.cards = [] # empty list--- for farbe in range(4): for rang in range(1,14): self.cards.append(Card(farbe, rang)) # --- gets filled '''print with a little layout for better overview''' def __str__(self): s = "" # empty string --- for i in range(len(self.cards)): s += " "*(i%13) + str(self.cards[i]) + "\n" # --- gets concatenated return s ''' What about playing with a new deck? SHUFFLE''' def shuffle(self): import random '''empty list, gets filled with random items from the Deck''' mixed = [] '''append a random item of 'cards' to 'mixed', len()-times''' for i in range(len(self.cards)): mixed.append(self.cards.pop(random.randint(0,len(self.cards)-1))) return mixed Deck1 = Deck() #print(Deck1) # works great! Deck2 = Deck.shuffle(Deck1) #Create a Deck2, which is the shuffled Deck1... it's doing sth - but what? '''Sensible and correct? In the class "Deck" there is a method called "shuffle". I call it with the argument "Deck1" It is supposed to give me "mixed" (a list?) back. I call this returned thing "Deck2". ''' print(Deck2) # Result: 52 times <__main__.Card object at 0x0000022769A8BBC0> with different memory locations Deck2 = Deck1.shuffle # No error, until "print(Deck2)" is active: print(Deck2) # <bound method Deck.shuffle of <__main__.Deck object at 0x000001C990A8B200>>