@Alfons Mittelmeyer: Ob reguläre Ausdrücke angebracht sind oder nicht ist eine ermessensfrage, auf jeden Fall sind sie durchaus für solche Aufgaben gedacht und in diesem Fall auch nicht wirklich komplizierterer Code als:
denn:
Das hier:
mag Dir vielleicht simpler und schneller vorkommen als die `startswith()`-Methode, aber es ist nicht ganz äquivalent, weil es einen Fall nicht abdeckt der zu einer Ausnahme führen kann, den `startswith()` allerdings abdeckt. Damit ist das in der Tat qualitativ schlechter.
kbr benutzt in seiner Funktion für Leute die den ``in``-Operator nicht kennen *keinen* ``in``-Operator. Du fängst hier schon wieder mit einer sehr ”speziellen” Argumentation an. Auf dieser Grundlage könnte man auch monieren, dass der Benutzer den ``in``-Operator nicht kennt und deshalb auch kein `in` im Funktionsnamen vorkommen darf.
Funktionen macht man in BASIC des C64 mit ``DEF FN``. Ist aber nicht sehr gebräuchlich. Mit ``GOSUB`` macht man keine Funktionen — es gibt ja gar keine lokalen Namen und man kann weder Argumente übergeben noch Werte an den Aufrufer zurückgeben. Das sind einfach Unterprogramme die alle auf dem gleichen globalen Namensraum operieren. Mit ``GOTO`` kann man auch den Effekt von Schleifen implementieren, aber nicht nur. Es ist halt eine allgemeine Sprunganweisung. Für Schleifen kennt CBM BASIC V2 allerdings ``FOR``/``TO``/``STEP``/``NEXT``.
Das man den Effekt von Funktionen auf verschiedene Weisen in Maschinensprache implementieren kann, ändert nichts daran das es in der Sprache selbst keine Funktionen gibt. Also zumindest in den allermeisten Befehlssätzen.
@DasIch: Vorsicht mit der zu allgemeinen Aussage zu Assembler und Schleifen — x86 kennt ja beispielsweise ``loop`` und den ``rep``-Präfix.