Erweiterung um Klasse "addition_Tore"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Code: Alles auswählen

MANNSCHAFTSANZAHL = 4
MANNSCHAFTSNAMEN_DATEINAME = "Mannschaftsnamen.txt"

def mannschaftsnamen_eingeben(anzahl):
    namen = []
    for i in range(1, anzahl + 1):
        namen.append(input(f"Gebe den Namen der {i}. Mannschaft ein: "))
    namen.sort()
    return namen

def mannschaftsnamen_speichern(namen, dateiname):
    with open(dateiname, "w", encoding="utf-8") as datei:
        for name in namen:
            datei.write(f"{name}\n")

def mannschaftsnamen_laden(dateiname):
    namen = []
    with open(dateiname, encoding="utf-8") as lines:
        for line in lines:
            namen.append(line.rstrip())
    return namen

def print_numbered_items(items):
    for i, item in enumerate(items, 1):
        print(f"{i}. {item}")

def main():
    print("Eingabe")
    mannschaftsnamen = mannschaftsnamen_eingeben(MANNSCHAFTSANZAHL)
    print_numbered_items(mannschaftsnamen)

    print("Speichern")
    mannschaftsnamen_speichern(mannschaftsnamen, MANNSCHAFTSNAMEN_DATEINAME)

    print("Laden")
    mannschaftsnamen = mannschaftsnamen_laden(MANNSCHAFTSNAMEN_DATEINAME)
    print_numbered_items(mannschaftsnamen)


class datensatz_mannschaft:
    def __init__(self, item, name,spiele_gewonnen, spiele_remis, spiele_verloren, plustore, minustore):
        self.item = item
        self.name = name
        self.spiele_gewonnen = spielegewonnen
        self.spiele_remis = spiele_remis
        self.spiele_verloren = spiele_verloren
        self.plustore = plustore
        self.minustore = minustore

class addition_Tore:
    def __init__(self, plustore, minustore):
        self.plustore = plustore + tore_team_A
        self.minustore = minustore + tore_team_B
        team_B.plustore = plustore + tore_team_B
        team_B.minustore = minustore + tore_team_A

if __name__ == "__main__":
    main()
Habe mein Programm gerade um die Klasse "addition_tore" erweitert. Ist hier alles korrekt?

Wo und wie (Syntax) überall ich "item" durch "Id" ersetzen muss, weiß ich leider nicht. Könnte bitte jemand meine Code in einer Datei speichern, die Änderungen vornehmen und dann den geänderten Code posten? Das wäre sehr nett, ich weiß hier wirklich nicht, wie ich das machen soll.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Einfach so „Klassen” zu definieren, ohne zu wissen, wie man sie verwendet, führt zu nichts. Dass eine Klasse Daten enthält, ist nichts überraschendes, die Frage ist, beschreibt die Klasse wirklich eine Mannschaft? Oder enthält sie nicht vielmehr alle Information über einen Tabellenplatz? Und wäre dann nicht eine Spieltagstabelle eine Liste aus lauter Tabellenplätzen?
Was soll das Programm mal können? Einen Spieltag darstellen? Dann wäre ein guter Startpunkt, mit dieser Funktion zu starten: stelle einen Spieltag dar, als Liste von Tabellenplätzen.

Bei der Klasse `addition_Tore` ist gar nichts korrekt. tore_team_A, tore_team_B, und team_B sind nicht definiert. Die Initialisierung einer Klasse sollte auch nicht ein anderes Exemplar (team_B) ändern, die Addition von Toren ist auch kein Zustand, sollte also gar nicht durch eine Klasse repräsentiert werden. Das ist eine Methode einer Klasse, die die Tore enthält.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bill987654321: Warum stellst Du Code hier ein den Du nicht mal ausprobiert hat, mit der Frage ob der korrekt ist, wenn doch spätestens bei der Verwendung *sofort* auffällt, dass der nicht funktioniert.

Die andere Klasse verwendest Du auch gar nicht.

Bezüglich der Namensschreibweisen kann ich mir nicht vorstellen das nicht schon mal gesagt wurde wie man Klassennamen schreibt. Am besten wirfst Du mal einen Blick hier rein: Style Guide for Python Code.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten