Hallo,
ich habe neu mit Python begonnen. Kann man, um ein Programm dauerhaft laufen zu lassen, nur mit der While-Schleife arbeiten oder gibt es noch andere Möglichkeiten ? Ich konnte dazu in Dokumentationen nichts finden. Von anderen Programmiersprachen kenne ich z.B. Sprungbefehle, um wieder an den Anfang zu springen.
Im voraus vielen Dank
Gruß
Ruschu
Programmablauf
- __blackjack__
- User
- Beiträge: 14033
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@ruschu: Man kann GOTO nachrüsten: https://github.com/snoack/python-goto/ (Nicht ernstgemeinter Vorschlag
)
@Sirius3: Das ist so furchtbar übersichtlich.

@Sirius3: Das ist so furchtbar übersichtlich.

„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
vielen Dank für die Antworten.
@Sirius3 Es geht mir hier nicht um Funktionalitäten sondern darum ob es nur mit While geht oder ob ich hier noch was anderes nehmen kann. Ich komme aus dem Bereich SPS wo alle Programme kontinurlich durchlaufen.
@Sirius3 Es geht mir hier nicht um Funktionalitäten sondern darum ob es nur mit While geht oder ob ich hier noch was anderes nehmen kann. Ich komme aus dem Bereich SPS wo alle Programme kontinurlich durchlaufen.
- __blackjack__
- User
- Beiträge: 14033
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@ruschu: Die einfachste Möglichkeit ist ``while True:`` wenn man etwas immer wieder wiederholen möchte. Neben dem `python-goto` das ich verlinkt habe, könnte man sich noch einen „tail call optimization“-Dekorator suchen (oder selber schreiben) und das ``while`` durch Rekursion ersetzen, aber das ist alles eher exotisch. In einigen Fällen geht statt ``while`` auch eine ``for``-Schleife wenn man ein Objekt hat das iterierbar ist, oder sich so eines schreiben kann.
Auf was für eine Ebene bewegen sich denn die Programmiersprachen im SPS-Bereich? Das was ich bisher gesehen habe waren eher Low-Level-Sprachen die eher an Assembler erinnern als an eine Hochsprache. Da ist Python deutlich anders.
Auf was für eine Ebene bewegen sich denn die Programmiersprachen im SPS-Bereich? Das was ich bisher gesehen habe waren eher Low-Level-Sprachen die eher an Assembler erinnern als an eine Hochsprache. Da ist Python deutlich anders.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
@__Blackjack__ Im SPS-Bereich wird hauptsächlich mit logischen Verknüpfungen gearbeitet, die in Herstellereigenen Sprachen arbeiten. In vielen Bereichen wird auch mit SCL programmiert, was auf Pascal basiert. Der Aufbau dieser Programme ist ganz anders. Es werden am Anfang alle Eingänge eingelesen und mit diesem Abbild gearbeitet. Am Schluß eines Durchlaufs werden ein Abbild der Ausgänge ausgegeben und dann läuft das Programm wieder automatisch von vorne los. Hier werden auch viele Prozesse gleichzeitig abgearbeitet.
@ruschu: in Python ist das ähnlich umsetzbar, aber eben nicht automatisch. Du bist daher sogar freier bei der Programm-Erstellung. Was Du innerhalb der while Schleife machst, darf beliebig komplex werden.
Code: Alles auswählen
while True:
data = read_input()
result = process(data)
write_output(result)
- __blackjack__
- User
- Beiträge: 14033
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Und falls man das Lesen der Eingabedaten für jeden Durchlauf schon als iterierbares Objekt hat, oder sich so etwas schreiben kann, dann kann man das auch als ``for``-Schleife ausdrücken:
Oder:
Und dann noch ganz ohne Schleife an der Stelle im Code wenn man eine Funktion oder Methode hat die ein iterierbares Objekt von Ergebnissen schreiben kann:
Code: Alles auswählen
for data in read_inputs():
result = process(data)
write_output(result)
Code: Alles auswählen
for result in map(process, read_inputs()):
write_output(result)
Code: Alles auswählen
write_outputs(map(process, read_inputs()))
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.