Stil Frage
Verfasst: Donnerstag 15. August 2013, 20:19
Ich habe eine Stil Frage, bzw. was erfahrenere Programmierer empfehlen würden:
Vorweg um was es geht: Die folgende Methode soll mir anhand einer Video Liste Datensätze herausfiltern deren Laufzeitlänge länger als der Inhalt des Arguments "Wert" ist. Es geht dabei nur um die erste Stelle(n).
Das Format von "Wert" beträgt beispielsweise "28:57", also 28 Minuten und 57 Sekunden
Gespeichert werden soll dann ein "x" in self.index[] wenn das Ergebnis wahr ist, ansonsten "n".
Mein erster und funktionierender Entwurf war dieser hier:
Das ist natürlich langatmig und umständlich, etwas eleganter:
Besser dürfte vermutlich Variante 2 sein, aber auch schwerer zu lesen bzw. Monate später wieder zu verstehen ?!
Was sollte da Vorrang haben, die Kürze des Codes oder die Verständlichkeit irgendwann später mal ?
... Und gibt es eine Möglichkeit in diese Zeile "...#Zeile*" noch den Counter mit einzubauen ?
Der Versuch das so zu machen:
ergab die Fehlermeldung: TypeError: unsupported operand type(s) for +=: 'int' and 'str'
Wenn ich statt des Semilikons ein Komma oder Doppelpunkt verwende bekomme ich einen Syntax Error
MfG
Tom
Vorweg um was es geht: Die folgende Methode soll mir anhand einer Video Liste Datensätze herausfiltern deren Laufzeitlänge länger als der Inhalt des Arguments "Wert" ist. Es geht dabei nur um die erste Stelle(n).
Das Format von "Wert" beträgt beispielsweise "28:57", also 28 Minuten und 57 Sekunden
Gespeichert werden soll dann ein "x" in self.index[] wenn das Ergebnis wahr ist, ansonsten "n".
Mein erster und funktionierender Entwurf war dieser hier:
Code: Alles auswählen
class Videotabelle(Tabelle):
....
....
def find_greater_as(self,wert):
counter = 0
for i in range(len(self.index)):
zahl = self.tabelle[i][9].split(':')
zahl = int(zahl[0])
if zahl >= wert:
self.index[i] ="x"
counter +=1
else:
self.index[i] ="n"
return counter
Code: Alles auswählen
class Videotabelle(Tabelle):
....
....
def find_greater_as(self,wert):
counter = 0
for i in range(len(self.index)):
self.index[i] = "x" if int(self.tabelle[i][9].split(':')[0]) >= wert else "n" # Zeile*
if self.index[i] == "x":
counter +=1
return counter
Was sollte da Vorrang haben, die Kürze des Codes oder die Verständlichkeit irgendwann später mal ?
... Und gibt es eine Möglichkeit in diese Zeile "...#Zeile*" noch den Counter mit einzubauen ?
Der Versuch das so zu machen:
Code: Alles auswählen
counter = 0
self.index[i] = "x"; counter +=1 if int(self.tabelle[i][9].split(':')[0]) >= wert else "n"
Wenn ich statt des Semilikons ein Komma oder Doppelpunkt verwende bekomme ich einen Syntax Error
MfG
Tom