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.
new_display_entry kannst du entsprechend manipulieren um Linksbündigkeit (Meh, seitdem ich zum ersten Mal Computern und Word begegnet bin kann ich das Wort nicht mehr ab, obwohl ich vorher sicher nicht oft drauf stieß) oder anderes zu erreichen, du könntest dir die Funktionen auch zusammen mit dem table übergeben lassen.
Hi, vielen Danke. Funktioniert echt super. Gibt nur ein Problem. Die Spalten werden nicht in der Reihenfolge ausgegeben, wie sie angelegt werden. Sieht man auch an dem Beispiel. a, b, c sollte es sein, a, c, b wird ausgegeben.
In Dicts ist die Reihenfolge nicht garantiert. Du müsstest column_names_in_order entsprechend sortieren. Oder Du verwendest statt eines Dicts eine Liste aus Tupeln. Dann müsstest Du aber den Code umfangreicher verändern.
MfG
HWK
def print_tablular(rows, alignments, heading=True):
values = [[str(v) for v in row] for row in rows]
widths = [max(len(row[i]) for row in values) for i in range(len(rows[0]))]
def align(s, w, a): return {'l': s.ljust, 'r': s.rjust, 'c': s.center}[a](w)
def print_line(c): print c * (sum(widths) + 3 * len(widths) + 1)
print_line("=")
for row in values:
if heading and len(values) > 1 and row == values[1]: print_line("-")
print "| %s |" % " | ".join(align(s, w, a) for s, w, a in zip(row, widths, alignments))
print_line("=")
print_tablular([
["Wert1", "Wert2", "Wert3"],
[1, 12345678, 0.32],
[2, 12345, 0.3],
[3, 156, 0.21],
], 'crl')
- Die "create"-Funktion ist überflüssig, da kann man auch gleich "PyTable" aufrufen. Wenn du unbedingt eine extra Funktion willst, dann reicht auch ein "create = PyTable"
- Du solltest dir PEP 8 bezüglich der Methodennamen durchlesen
- Listen haben eine "extend"-Methode, damit sparst du eine Menge in "addRows".
- "addRows" sollte "addRow" aufrufen und nicht selbst anhängen.
- "show" sollte besser "__str__" heißen.
- Deine while-Schleifen kannst du alle durch for-Schleifen ersetzen!
- Wenn du einen Index beim Iterieren brauchst, dann benutze "enumerate". Hier kannst du aber wunderbar "zip" verwenden.
- Schau dir mal die "join"-Methode von Strings an.
- Du schreibst zwei identische Schleifen für das Zusammensetzen einer Zeile. Das solltest du entweder in eine Funktion auslagern oder geschickt zusammenfassen. Doppelter Code ist immer schlecht.
- Zeilen 30 bis 43 kann man wohl durch die "max"-Funktion zusammenfassen.
Huch, so viel Kritik
Danke erst einmal dafür!
Viele Tipps die ich noch nicht kannte. Werde mich morgen mal ransetzen und eine verbesserte Version erstellen
Was PEP8 betrifft, dem stehe ich kritisch gegenüber. Ich habe meinen eigenen "Stil" entwickelt der in fast allen Programmiersprachen und Scriptsprachen gleich ist - und das soll auch so bleiben
Chrisber hat geschrieben:Was PEP8 betrifft, dem stehe ich kritisch gegenüber. Ich habe meinen eigenen "Stil" entwickelt der in fast allen Programmiersprachen und Scriptsprachen gleich ist - und das soll auch so bleiben
Wenn du den Code nur für dich schreibst und kein anderer ihn so sehen bekommt, dann kannst du natürlich schreiben wie du möchtest. Es ist aber schon sinnvoll sich an die Vorschläge der Sprache zu halten, da die Entwickler sich natürlich dabei etwas gedacht haben. Besonders wenn du deinen Code präsentierst ist es natürlich sinnvoll sich an einen Styleguide zu halten. Damit hilfst du anderen deinen Code leichter zu verstehen.
Chrisber hat geschrieben:Was PEP8 betrifft, dem stehe ich kritisch gegenüber. Ich habe meinen eigenen "Stil" entwickelt der in fast allen Programmiersprachen und Scriptsprachen gleich ist - und das soll auch so bleiben
Sprich dein Stil irritiert die Programmierer anderer Sprachen gleichermaßen weil du dich auch da nicht an Konventionen hälst? Also ich sehe da nix gutes daran.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice