@rogerb: man muß nicht alles in eine List-Comprehension packen, das ist nur dann sinnvoll, wenn es sich wirklich um einfache Ausdrücke handelt.
Du packst aber den vorhergehende und die nachfolgende Zeile zusammen mit einem Index in einen Ausdruck, wo eine einfache for-Schleife reichen würde.
suche Ausgabe: int(List[index_of_character_*])
@Sirius3,
ja die Lesbarkeit bei dieser list comprehension, stößt vielleicht schon an die Grenze. Ich persönlich arbeite sehr viel mit ...-comprehensions. Daher währe das mein erster Ansatz.
Aber es ist dann auch irgendwo Geschmacksache.
Wenn es gute Argumente für eine extra Klasse gibt, lasse ich mich gerne überzeugen. Bisher sehe ich die halt nicht.
Es ging mir hier auch nicht darum irgend eine Lösung abzuliefern, sondern eher um die Argumente für die eine oder die andere Methode.
ja die Lesbarkeit bei dieser list comprehension, stößt vielleicht schon an die Grenze. Ich persönlich arbeite sehr viel mit ...-comprehensions. Daher währe das mein erster Ansatz.
Aber es ist dann auch irgendwo Geschmacksache.
Wenn es gute Argumente für eine extra Klasse gibt, lasse ich mich gerne überzeugen. Bisher sehe ich die halt nicht.
Es ging mir hier auch nicht darum irgend eine Lösung abzuliefern, sondern eher um die Argumente für die eine oder die andere Methode.
-
- User
- Beiträge: 42
- Registriert: Dienstag 13. April 2021, 11:54
@__blackjack__ @Sirius3 @rogerb Vielen Dank euch dreien für die weiteren Inputs Und ja die Anweisungen im Programm sind viel länger als nur eine Zeile.
Zu deinem Kommentar @__blackjack__ ist es nun besser das "Parsen des Rezeptteile" vor dem __init__() zu machen (also so wie unten im Pseudocode)? Ich komme noch nicht ganz draus, was dann aus der __init__ Methode wird. Fällt sie weg oder was kommt da rein, dann? Also so stelle ich es mir nun vor:
Und ja genau so sieht ein "verkürztes" example recipe aus, nur enthält sie noch weitere Zeilen wie beispielsweise eine Zeile Titel, eine Zeile Originaltitel, usw. und die hier 2. und 3. Zeile an Zutaten können beliebig viele sein. Die hier letzte Zeile, also Zeile 4, besteht wiederum aus mehreren beliebig vielen Anweisungen (hier auch nur eine Zeile zur Vereinfachung).
EXAMPLE_RECIPE = """\
Preparation time: 1 hour
*\t5\t\tcarrots
*\t1\tpinches\tsalt
Bake for 40 minutes.
"""
Zu deinem Kommentar @__blackjack__ ist es nun besser das "Parsen des Rezeptteile" vor dem __init__() zu machen (also so wie unten im Pseudocode)? Ich komme noch nicht ganz draus, was dann aus der __init__ Methode wird. Fällt sie weg oder was kommt da rein, dann? Also so stelle ich es mir nun vor:
Code: Alles auswählen
class...
#part1 = des geparsten Rezepts
#part2 = des geparste Rezepts
#...
def __init__(self):
#? was kommt dann noch im init? Nichts mehr?
def __iter__(self):
#Inhalt: siehe vorherige Nachrichten
def andere_funktionen(self):
#...
def main():
...
iter(a_receipe_name)
...
EXAMPLE_RECIPE = """\
Preparation time: 1 hour
*\t5\t\tcarrots
*\t1\tpinches\tsalt
Bake for 40 minutes.
"""
"Those who can imagine anything, can create the impossible." Alan Turing
Also, wenn die __init__() leer ist, frage ich mich, warum du nicht einen generator verwendest. Was spricht dann noch für eine Klasse?
Wahlweise (sorry, muss ich einfach nochmal sagen) könnte man die Zeilen nach all den verschiedenen Kategorien wie Titel, Originaltitel, usw in einen dictionary vorsortieren.
Wahlweise (sorry, muss ich einfach nochmal sagen) könnte man die Zeilen nach all den verschiedenen Kategorien wie Titel, Originaltitel, usw in einen dictionary vorsortieren.
@GabrielleChanel: __blackjack__ braucht kein __init__, weil er das attrs-Paket benutzt.
attrs erzeugt automatisch ein __init__, das so aussehen würde:
attrs erzeugt automatisch ein __init__, das so aussehen würde:
Code: Alles auswählen
class Recipe:
def __init__(self, preparation_time, ingredients, instructions):
self.preparation_time = preparation_time
self.ingredients = ingredients
self.instructions = instructions
def iter_instructions(self):
return iter(self.instructions)
-
- User
- Beiträge: 42
- Registriert: Dienstag 13. April 2021, 11:54
@Sirius3 Vielen herzlichen Dank, das wusste ich nicht mit den attr(), die selbst schon ein __init__() aufrufen. Stimmt, dann kann man diese ja weglassen, statt nochmals aufzuschreiben. Jetzt gibt alles Sinn, vielen Dank
"Those who can imagine anything, can create the impossible." Alan Turing