Mulit-Toll

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Benutzeravatar
Arthur
User
Beiträge: 23
Registriert: Sonntag 12. November 2006, 18:07

Ich hab ein Tool mit verschiedenen Funktionen geschrieben.

es kann:
Parabel zeichen
Determinanten lösen
Zeichenketten verschlüßeln
Rgb-Farben auf knofdruck anzeigen
html-Datien mit einer RGB-Farbtabelle aus je zwei der farben erstellen
eine übersicht über gesehene Folgen einer (belibegen) Serie geben

es bietet verschiedene farbshemata und hat die funtion eines als Standart zu setzen

hier der Code:

http://paste.pocoo.org/show/1055/

ich hoffe mein stil ist halbwegs vernünftig, da ich versucht habe nach OOP zu programmieren (KA ob mir das gelungen ist).

der sinn oder unsinn einiger aufgaben ist sichlich nicht ganz einzusehen, trotzdem aber bitte ich euch um eure Meinung zu meinem Werk.

Für einen Reibungslosen ablauf sind an einigen stellen neue Ffade anzugeben!
Ich bin nicht verrückt!
Nur verhaltensoriginell!
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Was mir auf den ersten Blick auffaellt: Warum erstelltst du die ganzen Checkbuttons per Hand? Und tust sie dann per Hand in eine Liste? Warum nicht gleich

Code: Alles auswählen

self.f = [CheckButton(...) for i in range(22)]
oder sowas?

Und die ganze elif-Konstrutkion ab Zeile 1067 koennte man zumindest durch ein dict ersetzen. Besser: eine Formel dafuer verwenden, schau dir mal an, was ord() und chr() so machen...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Arthur hat geschrieben:ich hoffe mein stil ist halbwegs vernünftig
Hallo Arthur!

Hier habe ich ein paar Dinge, die mir beim Durchsehen deines Codes auffallen. Bitte nicht negativ auffassen. Ich zeige nur auf, wie ich es lieber hätte und wie ich persönlich programmiere.

- Ich habe das Tool zwar nicht ausprobiert, aber etwas solltest du unbedingt ändern. Überhaupt dann, wenn andere dein Programm lesen sollten. --> Kürze die Länge der Zeilen auf ca. 80 Zeichen runter. Bei Zeilen der Länge von 114 und mehr, ist es kein Spaß, dein Programm durchzusehen. Diese ständige Scrollerei steht nicht dafür.

- Du verwendest keine Docstrings. Das sind erklärende Texte, direkt unterhalb des Funktionskopfes.

- Du kommentierst deinen Code kaum. So muss man den Quellcode, Zeile für Zeile durchlesen, wenn man wissen will, was da passiert. Wenn du zwischendrinn ein paar Kommentare schreiben würdest, dann lässt sich dein Code besser mit den Augen "scannen". Codestellen werden schneller gefunden und man weiß, was der Programmierer machen wollte.

- ``import Tkinter as tk``

- Das und viele andere Stellen im Code kann man extrem verkürzen, indem du Schleifen verwendest:

Code: Alles auswählen

        self.labx1=Label(self.frame1, text='1', font=myfont)
        #...
        self.labx22=Label(self.frame1, text='22', font=myfont)

Code: Alles auswählen

self.xlabels = []
for i in range(22):
    self.xlabels.append(Label(self.frame1, text='22', font=myfont))
- Das kann man auch ziemlich gut kürzen:

Code: Alles auswählen

for x in a :
    if x=='a' or x=='A':
        y=1
    elif x=='b'or x=='B':
        y=2
    elif x=='c'or x=='C':
        y=3
    elif x=='d'or x=='D':
        y=4
    elif x=='e'or x=='E':
Stattdessen könntest du hier so vorgehen:

Code: Alles auswählen

my_dict = {
    "a": 1,
    "b": 2,
    "c": 3,
    ...
}
y = my_dict[x.lower()]
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Arthur
User
Beiträge: 23
Registriert: Sonntag 12. November 2006, 18:07

ich versuche eigendlich immer den Code zu kürzen aber das programm lief nicht mehr, als ich einige zeilen(144,145) mit umbrüchen drinn hatte. Sorry

Wie erstelle ich Dotsrings?? einfach nen string unter die def-anweisung hängen??

Das mit den kommentare is irgendwie schon stimmig, nur ich dachte ich hätte funktionsnamen usw so gewählt, das es halbwegs selbsterklärend sei.

Das mit den schleifen hat was, da es so auch schon von der programmierung her sehr mühsam war, aber ich wusste nicht wie ich es anders machen sollte :oops:

Das mit dem dict versteh ich nicht so ganz. Weil so funzt es noch nicht. Ich brache doch noch eins in die andere "richtung"?
Ich bin nicht verrückt!
Nur verhaltensoriginell!
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Arthur hat geschrieben:... Wie erstelle ich Doc-strings?? einfach nen string unter die def-anweisung hängen?? ...
Jupp:

Code: Alles auswählen

>>> def doced_method():
... 	"""Eigentlich nur ein Test, um Doc-strings zu erlaeutern
... 	"""
... 	pass
... 
>>> 
>>> help(doced_method)
Help on function doced_method in module __main__:

doced_method()
    Eigentlich nur ein Test, um Docstrings zu erlaeutern
Was Gerolds Optimierung mit dem "Dictionary" (my_dict) angeht, so muss Du dieses natürlich erst noch in Deinen Code integrieren (u.a. in die "for x in a-Schleife, sowie gegenebenfalls an weiteren Stellen nachpflegen.
Benutzeravatar
Arthur
User
Beiträge: 23
Registriert: Sonntag 12. November 2006, 18:07

sooo, ich hab jetzt mal angefangen einiges von dem umzusetzen, was ihr mir vorgeschlagen habt, bin zwar noch nicht fertig, geb aber schon mal nen zwischenstand ab:

http://paste.pocoo.org/show/1064/

an die umsetzung mit den Schleifen von gerold muss ich mich noch begeben, aber ich hoffe das wenigstens der rest schon mal ganz vernünftig ist...
Ich bin nicht verrückt!
Nur verhaltensoriginell!
Antworten