kann man das smarter/eleganter lösen ?

  • mir wurde mal gesagt: wenn du richtig programmiert hast, dann steht in main(): maximal ein bis zwei zeilen. aber wenn das smart ist (einiges in main()), dann soll es mir recht sein ...

    hier der aktuelle code:

    und wie gehabt: wenn's smarter geht ...


    besten dank im voraus

    so long

    --- wer lesen kann, ist klar im Vorteil ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---


  • wenn du richtig programmiert hast, dann steht in main(): maximal ein bis zwei zeilen.

    So pauschal ist das Quatsch. Wichtig ist nur, dass du (i.d.R.) nicht den globalen Namensraum zumuellst und einen abgekapselten Einstiegspunkt hast, der

    1. importiert werden kann (✅ dank Funktion) und
    2. bei einem Import der Datei nicht direkt ausgefuehrt wird (✅ dank if __name__ == "__main__")

    aber ob du den Kern eines kleinen Programms wie diesem in eine Funktion main packst oder in eine andere, die dann in main aufgerufen wird ist voellig egal.


    Einen Teil der Ausgabestrings in Konstanten zu packen und andere aber inline zu haben finde ich etwas seltsam - die Konstanten kann man sich hier IMHO auch sparen.


    Code
            except ValueError:
                print(FALSCHEINGABE)
                continue
            except AssertionError:
                print(FALSCHEINGABE)
                continue

    kann gekuerzt werden, wenn du keine getrennte Fehlerbehandlung brauchst:

    Code
            except (ValueError, AssertionError):
                print(FALSCHEINGABE)
                continue
  • Die continue gehoeren da nicht hin. Entweder packst du das


    weiter = input("Primzahl bestimmen? (j/n)")


    vor das erste except, oder du packst es hinter die try/excepts.

  • jetzt kommt weniger ein code zum smarten, sondern eine Verstädnisfrage zu Klassen (ist aus der MicroPython-Doku) :

    Code
    >>> import machine
    >>> pin = machine.Pin(2, machine.Pin.OUT)
    >>> pin.on()
    >>> pin.off()

    es steht dazu nun folgendes geschrieben (ich habe dies mal übersetzt) :

    Quote

    beachte dabei, dass die on-methode des pin-befehls die led möglicherweise ausschaltet und die off-methode diese einschaltet (oder umgekehrt). dies abhängig davon, je nachdem, wie die led auf dem board verdrahtet beziehungsweise verlötet ist. um diesen missstand zu beheben, wird die machine.Signal-klasse bereitgestellt.

    so, bei mir ist genau dieser fall eingetreten:

    pin.on() schaltet die led aus ...

    wie habe ich denn nun diese klasse einzusetzen (ein code-beispiel dafür wurde nämlich nicht angegeben ...)


    besten dank im voraus ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---


  • so, ich habe mal wieder etwas code und die frage, ob/wie man es smarter lösen kann. ich bin auch nicht ganz zufrieden, so wie es jetzt läuft, aber besser bekomme ich es momentan nicht hin. UND ich möchte eben immer noch lernen, 'sauber' zu programmieren ...

    ach, ja: ist mpython und wird auf der esp8266 ausgeführt, an der ein 300er led-streifen ws8212b (?) hängt - jedenfalls nur ein datenkabel - ist dem code allerdings egal ;) ...

    besten dank im voraus ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---