Dauerschleife durch eingabe abrechen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Satzende
User
Beiträge: 70
Registriert: Samstag 8. Januar 2011, 12:41

Donnerstag 8. März 2012, 12:00

Hallo.
Wie oben schon steht will ich eine Dauerschleife durch eine Eingabe abrechen.
Problem ist das mir dafür nur raw_input in den Sinn kommt, das aber wartet immer auf eine Eingabe und unterbricht so die Dauerschleife.

Bitte um wegweisende Kommentare
theo.puke
User
Beiträge: 17
Registriert: Samstag 21. Januar 2012, 16:17

Donnerstag 8. März 2012, 12:07

Mit "break" bricht man schleifen ab.
Benutzeravatar
/me
User
Beiträge: 3257
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Donnerstag 8. März 2012, 12:21

theo.puke hat geschrieben:Mit "break" bricht man schleifen ab.
Das war wohl eher nicht der Knackpunkt.

Läuft das Programm in der Shell oder mit einem GUI-Toolkit?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 8. März 2012, 12:21

theo.puke hat geschrieben:Mit "break" bricht man schleifen ab.
Was hat ``break`` mit einer Eingabeabfrage zu tun?

@Satzende: Das wird mit Standard-Python kaum gehen - außer mittels STRG+C. Hier findest Du dazu einen Lösungsvorschlag. Ich habe mit ``signal`` noch nie selber gearbeitet, daher kann ich über die Güte des Beitrags nichts aussagen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Satzende
User
Beiträge: 70
Registriert: Samstag 8. Januar 2011, 12:41

Donnerstag 8. März 2012, 12:41

Danke für eure schnellen Antworten.

Das ganze läuft in der shell. An GUI/signal hatte ich schon gedacht, wollte mich vergewissern das mit
Standard-Python nicht doch was zu machen ist.

@Hyperion: danke werde mir das durchlesen
lunar

Donnerstag 8. März 2012, 18:04

@Satzende: Du kannst die Schleife natürlich auch in einen Hintergrundthread verlagern (threading.Thread), im Vordergrund mit "raw_input()" auf die Eingabe warten, und bei erfolgter Eingabe dem Thread über ein "threading.Event" mitteilen, dass er sich zu beenden hat.

Im Allgemeinen aber ist das Unterbrechen mittels Strg+C bei jedem Betriebssystem das übliche Mittel, um laufende Konsolenprogramme gefahrlos zu unterbrechen.
Satzende
User
Beiträge: 70
Registriert: Samstag 8. Januar 2011, 12:41

Donnerstag 8. März 2012, 18:49

Finde keine deutsche Referenz zu dem module Signal.


@lunar : Danke werde ich mir nun ansehen.
lunar

Donnerstag 8. März 2012, 18:59

@Satzende: Du wirst zu keinen Modul eine deutschsprachige Referenz finden, auch zu "threading" nicht. Wenn das für Dich ein Problem ist, dann musst Du entweder Englisch lernen oder mit dem Programmieren aufhören. Es mag Dir nicht gefallen, doch ohne Kenntnisse der englischen Sprache bist Du als Programmierer ziemlich verloren.
Antworten