@Bill987654321: Um Himmelswillen *nein*. Fang *nicht* an Grunddatentypen in Namen zu stecken und schon gar nicht mit kryptischen Kürzeln. Datentypen ändert man im Laufe des Programms auch gerne mal und dann hat man entweder falsche, irreführende Namen oder muss die überall anpassen, obwohl sich an der Bedeutung des Wertes überhaupt nichts geändert hat.
Das es sich um mehr als einen Namen handelt sieht man ja bereits daran, dass der Name die Mehrzahl beschreibt. Was zu empfehlen ist, wäre auf Englisch zu benennen, denn dann hat man nur *sehr* selten den Fall das Einzahl und Mehrzahl gleich heissen, was im Deutschen leider häufiger auftritt.
Ja, Du kannst das auch MANSCHAFTSNAMEN_DATEINAME nennen. Nächste Frage wäre dann warum die Datei und diese Konstante so heisst, die Liste dann aber `vereinsnamen` und nicht `mannschaftsnamen` heisst. Ist das immer Deckungsgleich? Kann eventuell ein Verein nicht auch mehr als eine Mannschaft mit unterschiedlichen Namen haben? Zum Beispiel eine Herrenmannschaft und eine Frauenmannschaft (lustiges Wort übrigends)?
Und es nützt natürlich nichts die Konstante zu definieren, die im Code dann aber überhaupt nicht zu benutzen und da weiterhin den Wert wiederholt stehen zu haben.
Wenn `li_` für Liste steht, warum dann in der Schleife zum Schreiben der Namen in die Datei *einen* Namen, der ja *keine* Liste ist `li_vereinsname` nennen?
`anzahl_mannschaften` ist auch eine Konstante und sollte gross geschrieben werden.
Zwischen Funktion/Methode und öffnender Klammer für den Aufruf gehört kein Leerzeichen. Das wird da ja nicht mal konsequent falsch gesetzt. Wonach entscheidest Du das?
Klammern um einen einzelnen Namen oder literalen Wert machen keinen Sinn.
Der einzige Kommentar passt nicht mehr zum Inhalt. Ein Grund warum man in Kommentaren nicht beschreibt *was* der Code macht, denn dann muss man plötzlich noch daran denken einen überflüssigen Kommentar immer aktuell zu halten. Falsche Kommentare sind schlimmer als fehlende Kommentare, weil der Leser dann erst einmal herausfinden muss wem er glauben/wer falsch ist — der Code oder der Kommentar.
Beim einlesen würde sich eine „list comprehension“ anbieten.
Die Anzahl der Mannschaften sollte man bei der Ausgabe dann nicht mehr über die Konstante ermitteln sondern einfach die in der Liste vorhandenen Namen ausgeben. In der Schleife wird mit dem `print()` auch ein falscher Wert ausgegeben, nämlich immer die gesamte Liste.
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
MANNSCHAFTSANZAHL = 4
MANNSCHAFTSNAMEN_DATEINAME = "Mannschaftsnamen.txt"
def main():
mannschaftsnamen = []
for i in range(1, MANNSCHAFTSANZAHL + 1):
mannschaftsname = input(f"Gebe den Namen der {i}. Mannschaft ein: ")
print(f"Die {i}. Mannschaft ist {mannschaftsname}.")
mannschaftsnamen.append(mannschaftsname)
print(i)
print(type(i))
print(mannschaftsname)
print(mannschaftsnamen, "mannschaftsnamen")
print("Leerzeile")
with open(MANNSCHAFTSNAMEN_DATEINAME, "w", encoding="utf-8") as file:
for mannschaftsname in mannschaftsnamen:
file.write(f"{mannschaftsname}\n")
with open(MANNSCHAFTSNAMEN_DATEINAME, encoding="utf-8") as lines:
mannschaftsnamen = [line.rstrip() for line in lines]
for mannschaftsname in mannschaftsnamen:
print(mannschaftsname)
print("End")
if __name__ == "__main__":
main()