Danke Sirius fuer die Antwort.
Also, kurze Hintergrund:
ich möchte meine Tools wie Analytic Hierarchy Process (
https://www.dawidjasinski.com/lm/) "webiger" gestalten - interaktiver machen als Tabellenkalkulationen.
Um mein Ziel zu erreichen, habe ich beschlossen, sie mit Flask auf meine Webseite hochzuladen (strategisch habe ich beschlossen, von VBA zu Python zu wechseln). Aber vorher muss ich Flask noch lernen. Aber vorher muss ich das Programm in Python schreiben. Aber vorher muss ich mich frei in Python bewegen. Deshalb habe ich vor 2 Wochen einen Python-Kurs auf codecademy und "2021 Complete Python Bootcamp From Zero to Hero in Python)" auf Udemy begonnen- hier gibt es am Ende des Kurses ein Meilenstein-Projekt, in dem man seine Fähigkeiten testen kann und hier bin ich hängen geblieben.
Ich möchte verstehen, was in meinem Code aus der Perspektive der Syntax falsch ist. Ich weiß, dass es wahrscheinlich einen besseren Weg gibt, den Meilenstein zu erreichen, aber andere Wege umgehen vielleicht meine Wissens-/Fähigkeitsdefizite. Der nicht funktionierende Code zeigt mir, dass ich etwas nicht verstehe. Ich muss verstehen, was ich falsch mache. Andernfalls wird dieses Defizit an anderer Stelle auftauchen und mir graue Haare bescheren!
Das Ziel des Meilensteins ist es, ein BlackJack-Kartenspiel zu entwickeln. Ich habe einige Klassen erstellt, die ich in Zukunft verwenden/erweitern werde.
Mein Problem: Ich möchte eine Bankklasse erstellen, die einen gemischten Kartensatz hat und eine Karte ausgeben kann. Wenn ich eine neue Instanz von Bank erstelle, erhalte ich einen Fehler:
Code: Alles auswählen
# 1. Create a card
import random
suite = ("diamonds","clubs","hearts","spades")
rank = (2,3,4,5,6,7,8,9,10,"Jack","Queen","King","Ace")
value = {2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,"Jack":10,"Queen":10,"King":10,"Ace":11}
class Card:
def __init__(self, suite, rank):
self.suite = suite
self.rank = rank
self.value = value[rank]
def __str__(self):
return "Suite: " + self.suite + ", Rank: " + str(self.rank) + ", Value: " + str(self.value)
# 2. Create a deck
class Deck(Card):
def __init__(self):
self.all_cards = []
for i in suite:
for j in rank:
unique_card = Card(i,j)
self.all_cards.append(unique_card)
random.shuffle(self.all_cards)
# 3. Create a bank
class Bank(Deck):
def __init__(self):
give_card = self.all_cards.pop(0)
# Check
new = Bank()
Der Fehler:
Code: Alles auswählen
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-129-a4b630387adf> in <module>
----> 1 new = Bank()
<ipython-input-128-8511bdc8b8f4> in __init__(self)
33
34 def __init__(self):
---> 35 give_card = self.all_cards.pop(0)
36
AttributeError: 'Bank' object has no attribute 'all_cards'