@zackdvd: Noch Anmerkungen zum Quelltext:
Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Falls sich `numbering` nicht ändert, also immer ganze Zahlen von 1 aufwärts bis zur Länge der anderen Listen, dann ist das nichts was man in einer Liste speichert. Und schon gar nicht von Hand die Zahlen alle tippt. Also das wäre mindestens mal ``numbering = list(range(1, len(bass) + 1))``. Aber eigentlich generiert man solche Zahlen dann wenn man sie braucht. Das vorliegende Programm braucht die ja nicht einmal.
Man verwendet keine kryptischen Abkürzungen in Namen und auch keine Grunddatentypen.
Wenn ein Name mit einem Schlüsselwort oder einer eingebauten Funktion kollidiert ist die Konvention da einen Unterstrich am Ende anzuhängen. Also `class_` statt `eclass` weil `class` als Name nicht erlaubt ist.
Magische Indexzugriffe sollte man vermeiden. Man kann in ``for``-Schleifen gleich im Schleifenkopf iterierbare Objekte auf Namen aufteilen:
Code: Alles auswählen
for bass, treble in equalizer_values:
print(bass, treble, sep=",", end=" ")
Das mit den ``print``-Argument ist ein bisschen gewöhnungsbedürftig. Statt da an den Schlüsselwortargumenten herum zu fummeln, würde man eher *eine* Zeichenkette erstellen, die den gewünschten Inhalt hat.
Code: Alles auswählen
#!/usr/bin/env python3
def print_equalizer(class_, equalizer_values):
print(f"{class_}:")
print(" ".join(",".join(map(str, pair)) for pair in equalizer_values))
def main():
bass = [70, 80, 80, 80, 0, 0, 0, 0, 0, 0]
treble = [30, 30, 30, 50, 60, 60, 60, 70, 70, 60]
assert len(bass) == len(treble)
print_equalizer("changed", zip(bass, treble))
print_equalizer("changed", zip(bass, treble))
if __name__ == "__main__":
main()