bootsmann Das weiß ich selbstverständlich und reibe es gerne jedem unter die Nase, der sich nicht dran hält! War nur ein Extrembeispiel, das ist natürlich kein Code den man so verwenden will. Auch wenn er voll und ganz die Aufgabe löst. Hab' die Bibel auch gleich mal verlinkt, bzw. ein wichtiges Kapitel daraus
Wie sage ich es in Python ? (Einsteigerfragen)
-
framp -
17. Dezember 2013 um 23:59 -
Erledigt
L
I
V
E
Stammtisch ab 20:30 Uhr im Chat
-
-
Wie sage ich es in Python ? (Einsteigerfragen)? Schau mal ob du hier fündig wirst!
-
Man muss nicht immer alles schreiben was syntaktische geht. List comprehension ist kurz aber auch schwer zu lesen wenn man mit Python anfängt. Geht alles auch mit for loops zu schreiben.
-
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 :
Drei Zeilen gegen eine - und es gibt sicher viele Fälle, in denen man vier oder fünf Zeilen elegant in eine bekommt.
-
Klar werden die benutzt und sind auch gut. Es geht hier aber um Anfänger und die sollten erst einmal die Finger davon lassen. Sie verwirren mehr als dass sie helfen.
-
Gott... dieses geklammere... keine Einrückung.... da hätte ich ja auch C lernen können.
-
Hallo,
bootsmann: mit #697 machst du wahrscheinlich eher Perl-Monks glücklich als Pythoniasten
Gruß, noisefloor
-
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:
Im Buch wird immer erst der input geholt und dann in einen int gewandelt:
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,
richtig, `import` Statements gehören an den Anfang des Codes. Alles andere ist unübersichtlich = schlechter Stil.
Gruß, noisefloor
-
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.
-
Update: 5 Sekunden Internetrecherche ergaben, dass das Attribut sticky dich zum Ziel führen kann... schon probiert?
-
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...
Das führt mich aber direkt zum nächsten Problem..
Variablemüberprüfung in PHP: if $var != NULL
wie geht das in Python3?
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:
Ist aber ein Sonderfall wegen dem None (PHP Äquivalent wäre NULL), normal so:
Pythona = 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?
-
- 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.
-
hyle Ja genau. Ich dachte nur, es gibt vielleicht auch eine Möglichkeit, das über einen cronjob zu regeln, da es beim Fall Zeitschaltuhr ja nicht so genau auf die Minute drauf ankommt und das Skript nicht durchgehend laufen muss.
-
- 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!