ich versuche gerade ein Programm zu schreiben, bei dem der Anwender die Mannschaften einer Liga eingibt, die in einer Text-Datei gespeichert werden. Anschließend können die Mannschaften aufgerufen werden. Es kann dann eingegeben werden, wer gegen wen gespielt hat und wie das Ergebnis war.
Code: Alles auswählen
import inspect
import numpy as np
def line_info():
f = inspect.currentframe()
g = inspect.getframeinfo(f.f_back)
print(f"Hier ist die Zeilennummer: {g.lineno} called from {g.function}")
def variablennullsetzung():
global tore_i
tore_i = 0
global tore_j
tore_j = 0
global gegentore_i
gegentore_i = 0
global gegentore_j
gegentore_j = 0
global anzahl_spiele_i
anzahl_spiele_i = 0
global anzahl_spiele_j
anzahl_spiele_j = 0
global spiele_gewonnen_i
spiele_gewonnen_i = 0
global spiele_gewonnen_j
spiele_gewonnen_j = 0
global spiele_remis_i
spiele_remis_i = 0
global spiele_remis_j
spiele_remis_j = 0
global spiele_verloren_i
spiele_verloren_i = 0
global spiele_verloren_j
spiele_verloren_j = 0
global punkte_i
punkte_i = 0
global punkte_j
punkte_j = 0
variablennullsetzung()
# belegte Variablen: a, b, c, e, i, j
# Hier beginnt das Hauptprogramm
mannschaftsanzahl = 4
tabelle_lfd_nr = []
mannschaftsnamen = []
eingegebene_kennzahlen = []
spieledaten = []
tabelle = []
anzahl_spiele = 0
spiele_gewonnen = 0
spiele_remis = 0
spiele_verloren = 0
tore = 0
gegentore = 0
tordifferenz = 0
punkte = 0
# Abfrage "neue Tabelle anlegen" ja oder nein
while True:
try:
Abfrage_neue_Tabelle = input(
"Willst du eine neue Tabelle anlegen? \n Gebe j für oder n für nein ein: "
)
except ValueError:
pass
else:
if Abfrage_neue_Tabelle == "j" or Abfrage_neue_Tabelle == "n":
break
print(line_info(), "Das war keine gültige Eingabe\n")
print("\n")
# Hier endet das Hauptprogramm
# Hier beginnt die Schleife Abfrage_neue_Tabelle=="j"
if Abfrage_neue_Tabelle == "j":
lfd_nr = 1
tabelle_lfd_nr.append(lfd_nr)
with open("vergebene laufende Nummern.txt", "w", encoding="utf-8") as output:
output.write(f"{lfd_nr}")
for a in range(0, mannschaftsanzahl):
mannschaftsname = input(f"Gebe den Namen der {a + 1}. Mannschaft ein")
print((line_info()), f"Der Name der {a + 1}. Mannschaft ist: {mannschaftsname}")
mannschaftsnamen.append(mannschaftsname)
print("\n")
mannschaftsnamen.sort()
with open("Mannschaftsnamen.txt", "w", encoding="utf-8") as output:
for mannschaftsname in mannschaftsnamen:
output.write(f"{mannschaftsname}\n")
mannschaftsnamen = []
with open("Mannschaftsnamen.txt", encoding="utf-8") as lines:
for line in lines:
mannschaftsnamen.append(line.rstrip())
print(line_info(), "mannschaftsnamen:", mannschaftsnamen)
print("\n")
# Hier endet die Schleife Abfrage_neue_Tabelle=="j"
# Hier beginnt die Schleife Abfrage_neue_Tabelle=="n"
if Abfrage_neue_Tabelle == "n":
mannschaftsnamen = []
with open("Mannschaftsnamen.txt", encoding="utf-8") as lines:
for line in lines:
mannschaftsnamen.append(line.rstrip())
print(line_info(), "Mannschaftsnamen: ", mannschaftsnamen)
with open("vergebene laufende Nummern.txt", encoding="utf-8") as lines:
for line in lines:
tabelle_lfd_nr.append(line.rstrip())
print(line_info(), "tabelle_lfd_nr = ", tabelle_lfd_nr)
# Hier beginnt das Hauptprogramm
b = int(mannschaftsanzahl / 2)
for c in range(0, b):
while True:
try:
i = int(input("Gebe die Kennzahl für die Heimmannschaft ein: "))
except ValueError:
pass
else:
if 0 < i <= mannschaftsanzahl and i not in eingegebene_kennzahlen:
break
print(line_info(), "Das war keine gültige Zahl. Versuche es noch einaml.....")
print("\n")
eingegebene_kennzahlen.append(i)
print(line_info(), "eingegebene_kennzahlen: ", eingegebene_kennzahlen)
print(line_info(), "Die Heimmannschaft (i) lautet: ", mannschaftsnamen[i - 1])
while True:
try:
j = int(input("Gebe die Kennzahl für die Auswärtsmannschaft ein: "))
except ValueError:
pass
else:
if 0 < j <= mannschaftsanzahl and j != i and j not in eingegebene_kennzahlen:
break
print(line_info(), "Das war keine gültige Zahl. Versuche es noch einaml.....")
print("\n")
eingegebene_kennzahlen.append(j)
print(line_info(), "eingegebene_kennzahlen: ", eingegebene_kennzahlen)
print(line_info(), "Die Auswärtsmannschaft (j) lautet: ", mannschaftsnamen[j - 1])
kennzahlenpaarung = [i, j]
print(line_info(), "Kennzahlenpaarung: ", kennzahlenpaarung)
paarung = [mannschaftsnamen[i - 1], mannschaftsnamen[j - 1]]
print(line_info(), "Die Paarung lautet: ", paarung)
print(line_info(), "Die Paarung lautet: ", mannschaftsnamen[i - 1], ":", mannschaftsnamen[j - 1])
# Eingabe Tore Heimmannschaft
while True:
try:
tore_a = int(input("Gebe die Tore der Heimmannschaft ein: "))
break
except ValueError:
print(line_info(), "Das war keine gültige Zahl. Versuche es nocheinmal.....")
print("\n")
print(line_info(), "Die Heimmannschaft lautet: ", mannschaftsnamen[i - 1])
print("\n")
# Eingabe Tore Auswärtsmannschaft
while True:
try:
tore_b = int(input("Gebe die Tore der Auswärtsmannschaft ein: "))
break
except ValueError:
print(line_info(), "Das war keine gültige Zahl. Versuche es nocheinmal.....")
print("\n")
print(line_info(), "Die Heimmannschaft lautet: ", mannschaftsnamen[j - 1])
print("\n")
print(line_info(), "Tore Heimmannschaft: ", tore_a)
print(line_info(), "Tore Auswärtsmannschaft: ", tore_b)
spielergebnis = [tore_a, tore_b]
print(line_info(), "Spielergebnis: ", spielergebnis[0], ":", spielergebnis[1])
print("\n")
spieldaten = [kennzahlenpaarung, paarung, spielergebnis]
print(line_info(), "Spieldaten: ", spieldaten)
spieledaten.append(spieldaten)
print(line_info(), "Spieledaten: ", spieledaten)
print("\n")
with open("Spieledaten.txt", "w", encoding="utf-8") as output:
for spieldaten in spieledaten:
output.write(f"{spieldaten}\n")
# Aufaddieren beginnt
print(line_info(), "Aufaddieren beginnt")
print("\n")
print(line_info(), "tore_i ", tore_i)
tore_i = tore_i + tore_a
print(line_info(), "tore_a", tore_a)
print(line_info(), "tore_i ", tore_i)
print("\n")
gegentore_i = + tore_b
tore_j = + tore_b
gegentore_j = gegentore_j + tore_a
anzahl_spiele_i = anzahl_spiele_i + 1
anzahl_spiele_j = anzahl_spiele_j + 1
tordifferenz_i = tore_i - gegentore_i
tordifferenz_j = tore_j - gegentore_j
if tore_a > tore_b:
spiele_gewonnen_i = spiele_gewonnen_i + 1
punkte_i = punkte_i + 3
spiele_verloren_j = spiele_verloren_j + 1
elif tore_a == tore_b:
spiele_remis_i = spiele_remis_i + 1
punkte_i = punkte_i + 1
spiele_remis_j = spiele_remis_j + 1
punkte_j = punkte_j + 1
else:
spiele_verloren_i = spiele_verloren_i + 1
spiele_gewonnen_j = spiele_gewonnen_j + 1
punkte_j = punkte_j + 3
tabellenzeile = (
mannschaftsnamen[i - 1],
anzahl_spiele_i, spiele_gewonnen_i, spiele_remis_i, spiele_verloren_i,
tore_i, gegentore_i, tordifferenz_i,
punkte_i
)
print(line_info(), "tabellenzeile: ", tabellenzeile)
print("\n")
tabelle.append(tabellenzeile)
tabellenzeile = (
mannschaftsnamen[j - 1],
anzahl_spiele_j, spiele_gewonnen_j, spiele_remis_j, spiele_verloren_j,
tore_j, gegentore_j, tordifferenz_j,
punkte_j
)
print(line_info(), "tabellenzeile: ", tabellenzeile)
print("\n")
tabelle.append(tabellenzeile)
print(line_info(), "tabelle : ", tabelle)
print("\n")
with open("tabelle.txt", "w", encoding="utf-8") as output:
for tabellenzeile in tabelle:
output.write(f"{tabellenzeile}\n")
print(line_info(), "tabelle = ", tabelle)
print("\n")
variablennullsetzung()
print("c = ", c)
print("\n")
e = 0
print("\n")
if c == b - 1:
with open("tabelle.txt", encoding="utf-8") as lines:
for line in lines:
tabelle.append(line.rstrip())
print(line_info(), "tabelle:", tabelle)
print("\n")
arr = np.zeros((mannschaftsanzahl, 12), dtype=object)
print(line_info())
print(arr)
print("\n")
for tabellenzeile in tabelle:
print(line_info(), "tabellenzeile = ", tabellenzeile)
e = e + 1
print(line_info(), "e = ", e)
print(line_info(), "lfd_nr", lfd_nr)
print("\n")
arr[e - 1, 0] = lfd_nr
arr[e - 1, 3] = tabellenzeile[0]
print(line_info(), "arr[e - 1, 3]: ", arr[e - 1, 3])
print(line_info(), "tabellenzeile[0]: ", tabellenzeile[0])
arr[e - 1, 4] = tabellenzeile[1]
anzahl_spiele = arr[e - 1, 4]
print(line_info(), "arr[e - 1, 4]: ", arr[e - 1, 4])
print(line_info(), "tabellenzeile[1]: ", tabellenzeile[1])
arr[e - 1, 5] = tabellenzeile[2]
spiele_gewonnen = arr[e - 1, 5]
arr[e - 1, 6] = tabellenzeile[3]
spiele_remis = arr[e - 1, 6]
arr[e - 1, 7] = tabellenzeile[4]
spiele_verloren = arr[e - 1, 7]
arr[e - 1, 8] = tabellenzeile[5]
tore = arr[e - 1, 8]
arr[e - 1, 9] = tabellenzeile[6]
gegentore = arr[e - 1, 9]
arr[e - 1, 10] = tabellenzeile[7]
tordifferenz = arr[e - 1, 10]
arr[e - 1, 11] = tabellenzeile[8]
punkte = arr[e - 1, 11]
if e == mannschaftsanzahl:
break
print(line_info(), "Hier ist man vor der Ausgabe des Arrays")
print(arr)
print("\n")
for e in range(0, mannschaftsanzahl):
print("e= ", e)
dtype = \
[
("lfd_nr[e]", np.str_, 4), ("mannschaftsname[e]", np.str_, 20),
("anzahl_spiele[e]", np.str_, 4), ("spiele_gewonnen[e]", np.str_, 4), ("spiele_remis[e]", np.str_, 4),
("spiele_verloren[e]", np.str_, 4), ("tore[e]", np.str_, 4), ("gegentore[e]", np.str_, 4),
("tordifferenz[e]", np.str_, 4), ("punkte[e]", np.str_, 4)
]
print(line_info(), "dtype: ", dtype)
print("\n")
for e in range(0, mannschaftsanzahl):
print("e= ", e)
values = \
[
("lfd_nr[e]", np.str_, 4), ("mannschaftsname[e]", np.str_, 20),
("anzahl_spiele[e]", np.str_, 4), ("spiele_gewonnen[e]", np.str_, 4), ("spiele_remis[e]", np.str_, 4),
("spiele_verloren[e]", np.str_, 4), ("tore[e]", np.str_, 4), ("gegentore[e]", np.str_, 4),
("tordifferenz[e]", np.str_, 4), ("punkte[e]", np.str_, 4)
]
print(line_info(), "01 values IN DER SCHLEIFE: ", values)
print("\n")
print(line_info(), "01 values AUSSERHALB DER SCHLEIFE: ", values)
print("\n")
print(line_info(), "Ur-arr: ", arr)
print("\n")
""" var = arr[arr[:, 8].argsort()][::-1]
print(var)
print("\n")
var1 = var[var[:, 10].argsort()][::-1]
print(var1)
print("\n")
varend = var1[var1[:, 11].argsort()][::-1]
print(varend) """
# np.argsort(a, axis=None, kind=None, order=None)[source]
# varend1 = np.argsort(arr, axis=(-1))
# varend2=np.sort(arr, order=["tore", "tordifferenz", "punkte"])
# print(varend2)
# arr.sort(order=["b", "a"])
# my_data = np.genfromtxt(infile, dtype=None, names=["a", "b", "c", "d"])
# ind = np.argsort(arr)
""" var = arr[arr[:, 8].lexsort()][::-1]
print(var)
print("\n")
var1 = var[var[:, 10].lexsort()][::-1]
print(var1)
print("\n")
varend3 = var1[var1[:, 11].lexsort()][::-1]
print(varend3) """
"""ind = np.argsort(arr)
print(ind) """
var = arr[arr[:, (8, 10, 11)].sort()]
print(line_info(), "var: ")
print(var)
# vas = arr[arr[:, ]]
""" vat = arr.sort(order=[
print(vat) """
# vau = np.genfromtxt( arr, dtype=object, names=(tore, tordifferenz, punkte) )
my_data = np.genfromtxt(arr, dtype=[('a', "int"), ('b', 'int'), ('c', int)])
Code: Alles auswählen
print(line_info(), "Ur-arr: ", arr)
Nach dieser Zeile muss das Array sortiert werden. Hier muss nach drei Spalten sortiert werden: Tore, Tordifferenz und Punkte. Nicht nacheinander sondern "verbunden". Gibt es hierfür einen Fachbegriff?
Das bekomme ich leider nicht hin, wie ihr an den folgenden Code-Zeilen sehen könnt.
Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.
Viele Grüße