Wie sage ich es in Python ? (Einsteigerfragen)

L I V E Stammtisch ab 20:30 Uhr im Chat
  • framp das ist - mal wieder - Ansichtssache. Ich weiß die List Comprehensions sehr zu schätzen, und nach einiger Zeit werden das auch die meisten Anfänger tun.

    Ein sinnfreies Beispiel :shy::

    Python
    numbers = []
    for i in range(10):
        numbers.append(i)
    Python
    numbers = [i for i in range(10)]

    Drei Zeilen gegen eine - und es gibt sicher viele Fälle, in denen man vier oder fünf Zeilen elegant in eine bekommt.

  • Frage zur Eingabe durch Benutzer.

    Im Buch kommen Aufgabenstellungen und Beispiele bei denen ein Nutzer eine Zahl eingeben soll, diese wird als int benötigt.

    Ich habe das immer z.B. so geschrieben:

    Code
    z = int(input())

    Im Buch wird immer erst der input geholt und dann in einen int gewandelt:

    Code
    z = input()
    zahl = int(z)

    Vielleicht fehlt mir hier auch wieder das entsprechende Denken und/oder die Erfahrung.

    Gibt es vielleicht Fälle, in denen ich die Eingabe des Nutzers (in diesem Fall ja eine Zahl) irgendwann auch als string brauchen könnte? Wobei ich könnte dann doch bei Bedarf aus dem int ein mit string machen, oder?

    Gruß Mario

  • Ich denke, das ist im Buch aus didaktischen Gründen so geschrieben.

    Die Schreibweise, so wie du sie verwendest, ist ok, es sei denn, du willst den String vor der Umwandlung noch modifizieren.

    Grundsätzlich ist jedoch zu bedenken, dass die beispiele im Buch vermutlich alle ohne eine Fehlerbehandlung sind:

    Wenn der eingegebene String keine reine Zahl im Sinne eines Integers ist, gibt es eine Exception und das Programm ist zu Ende.

    Es ist also eine gute Idee, alle Eingaben von Usern zu kontrollieren / oder die Umwandlungsroutine mit try: ... except: zu umgeben und den Eingabefehler abzufangen.

  • Grundsätzlich ist jedoch zu bedenken, dass die beispiele im Buch vermutlich alle ohne eine Fehlerbehandlung sind:

    Wenn der eingegebene String keine reine Zahl im Sinne eines Integers ist, gibt es eine Exception und das Programm ist zu Ende.

    Ja, das fehlt derzeit noch komplett, ich schätze dass kommt später.

    Ich hatte Übungen wo der Nutzer ggf Zahlen mit Kommastellen eingeben sollten, selbst wenn da wirklich ein Komma anstelle eines Punktes eingegeben wurden brach das Programm ab.

    Aber wie gesagt, ich schätze (und hoffe) dass kommt noch, daher werde ich mich damit jetzt noch nicht beschäftigen.

    Danke Dir.

    EDIT:

    Und schon kam als nächstes die Funktionen try und except im Buch ;)

  • Und mal wieder ich....

    Ich bin gerade bei Funktionen.

    Ich im Buch ist ein Beispielcode der mich etwas verwirrt, denn ich meine gelesen zu haben, dass immer erst Module importiert werden, dann Funktionen definiert. Vor allem wenn die Funktionen die Module nutzen.

    Im Beispiel wird erst ein Funktion mit random.randint definiert, und erst danach wird das Modul random importiert.

    Ich meine Ok, die Funktion wird ja erst später im Code aufgerufen und ausgeführt als das Modul importiert wird, daher ist es wohl technisch relativ egal.

    Aber wenn ich mir nun vorstelle, dass ein umfangreicher Code eventuell zig Module laden muss, aber schon vorher im Code lauter Funktionen definiert werden, welche die hier noch nicht importierten Module nutzt, der Code doch dadurch viel schwerer zu lesen/verstehen ist.

    Gruß Mario

  • Hallo...

    Wie kann ich mit grid() gepackte LabelFrame widgets horizontal ausrichten?

    Ich habe ein paar LabelFrames (Tkinter ttk) mit unterschiedlichem Inhalt (menge) und er richtet alles Horizontal zentriert aus. Ich möchte aber das er das an der oberen kante des MutterWidgets ausrichtet..

    Bei HTML macht man das in Tabellen via valign="top", wie funzt das in Python3?

    Gruß Tiieto

  • Bei HTML macht man das in Tabellen via valign="top", wie funzt das in Python3?

    Nein, macht man nicht. Ist in HTML5 rausgeflogen, und das aus gutem Grund. Grundsatz der Webentwicklung: Design/Layout und die Struktur des Dokuments werden nicht vermischt!

    Du kannst auch HTML nicht mit Python vergleichen, das erstere ist eine Beschreibungssprache, letzteres eine hohe Programmiersprache. Wennschon HTML und Tkinter, das GUI Toolkit welches du verwendest, aber auch hier ist ein Unterschied: Python+Tkinter <=> HTML+JS+CSS für jeweils Struktur, Stildefinitionen und Dynamik.

    Wenn du uns deinen Code zeigst, kann man denke ich besser helfen.

  • Perfekt!!! Genau was ich gesucht habe...

    Wonach genau hast Du gesucht um dieses Ergebnis zu erhalten? Sämtliche Seiten die ich gefunden habe, haben mir "sticky" nicht ausgespuckt oder ich war zu doof... :stumm:

    Das führt mich aber direkt zum nächsten Problem..

    Variablemüberprüfung in PHP: if $var != NULL

    wie geht das in Python3? :daumendreh2:

    Gruß Tiieto

  • Wonach genau hast Du gesucht um dieses Ergebnis zu erhalten? Sämtliche Seiten die ich gefunden habe, haben mir "sticky" nicht ausgespuckt oder ich war zu doof...

    "Tkinter align top"...


    Variablemüberprüfung in PHP: if $var != NULL

    wie geht das in Python3?

    Am ehesten so:

    Python
    if var is not None:
        # do something

    Ist aber ein Sonderfall wegen dem None (PHP Äquivalent wäre NULL), normal so:

    Python
    a = 6
    if a == 7:
        print('a ist 7')
    elif a == 8:
        print('a ist 8')
    else:
        print('a ist weder 7 noch 8')

    Nichts für ungut, aber vielleicht beginnst du besser hier: https://docs.python.org/3/tutorial/

  • Ich habe eine Frage zum Modul gpiozero: Um eine Zeitschaltuhr zu realisieren, möchte ich über cron alle 15 Minuten ein Python3-Script aufrufen, welches die aktuelle Zeit mit fest definierten Start- und End-Zeiten vergleicht. Je nach Ergebnis des Vergleichs soll ein Ausgang (Testweise erst einmal eine LED) ein- bzw. ausgeschaltet werden.

    Das Problem ist, dass die LED zwar eingeschaltet wird, am Ende des Scripts aber wieder erlischt, da das Script die Ausgänge wieder reseted. In der Doku bin ich leider nicht fündig geworden. Wie kann ich Ausgänge schalten, die auch nach dem Skript weiter laufen? Ein z.B. sleep(10 Stunden) finde ich unschön, da das Script dann ja ewig lange läuft.

    Weiß jemand, wie es funktioniert? Oder ist mein Ansatz gänzlich falsch?

    Python
    ausgang = LED(8)
    
    if(start < now) and (now < end):
        ausgang.on()
    else:
        ausgang.off()
    • Offizieller Beitrag

    da das Script dann ja ewig lange läuft.

    Ich vermute, dass Deine Frage hierauf aufbaut: Taster und Timer in einer Schleife

    Du kannst das Script doch einfach 24/7 durchlaufen lassen, in einer Schleife die Zeiten abfragen und je nach Bedarf schalten.

    • Offizieller Beitrag

    Wenn Du unbedingt die Crontab benutzen willst, dann erstelle einen Cronjob der das Script startet (am Scriptende pause() nicht vergessen) und einen Job, der es nach 10 Stunden wieder beendet. z.B. mit: pkill -SIGTERM -f /Pfad/zu/script.py

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!