{"id":4355,"date":"2026-02-22T11:27:22","date_gmt":"2026-02-22T10:27:22","guid":{"rendered":"https:\/\/staging.elv.eqxt.de\/?p=4355"},"modified":"2026-06-12T12:32:35","modified_gmt":"2026-06-12T10:32:35","slug":"einstieg-in-python-teil-4-ablaufsteuerung-und-programmstrukturen","status":"publish","type":"post","link":"https:\/\/de.elv.com\/elvjournal\/einstieg-in-python-teil-4-ablaufsteuerung-und-programmstrukturen\/","title":{"rendered":"Einstieg in Python (Teil 4): Ablaufsteuerung und Programmstrukturen"},"content":{"rendered":"\n<p class=\"has-gray-light-color has-text-color has-link-color has-h-5-font-size wp-elements-119e5582dc10674c2aac8e5b0e05e230\"><strong>Einstieg in Python, Teil &nbsp;4<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Ablaufsteuerung und Programmstrukturen<\/h1>\n\n\n\n<p><strong>Bislang lag der Hauptfokus dieser Artikelserie auf der Ansteuerung von Hardware. Die Kontrolle von IO-Pins und das Blinken von LEDs k\u00f6nnen in Python mit wenigen, nahezu selbsterkl\u00e4renden Anweisungen umgesetzt werden. Allerdings kommt man irgendwann an den Punkt, an dem auch tiefere Programmierkenntnisse erforderlich sind. Selbst wenn heute die Programmiert\u00e4tigkeiten h\u00e4ufig darin bestehen, passende Programmteile oder universelle Bibliotheken zusammenzuf\u00fcgen, ist immer ein gewisses Grundverst\u00e4ndnis der elementaren Programmstrukturen erforderlich. Andernfalls lassen sich komplexere Projekte kaum realisieren.<\/strong><\/p>\n\n\n\n<p>In diesem Beitrag sollen die folgenden Programmstrukturen n\u00e4her beleuchtet werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kommentare<\/li>\n\n\n\n<li>Print()<\/li>\n\n\n\n<li>Einr\u00fcckungen und Bl\u00f6cke<\/li>\n\n\n\n<li>Elementare Programmstrukturen wie if, while, for usw.<\/li>\n\n\n\n<li>Definition von Funktionen<\/li>\n<\/ul>\n\n\n\n<p>Damit werden dann auch Anweisungen und Befehle klar, die in fr\u00fcheren Beispielen bereits erforderlich waren, aber noch nicht im Detail diskutiert wurden.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Befehle und Anweisungen im Detail<\/h2>\n\n\n\n<p>Im Gegensatz zum klassischen C\/C++, bei dem ein Quellcode erst nach einem Kompilierungsprozess als ausf\u00fchrbarer Code zur Verf\u00fcgung steht, wird Python interpretiert. Der Code wird also unmittelbar ausgef\u00fchrt, d. h., es wird keine f\u00fcr das betreffende System ausf\u00fchrbare Datei generiert. Das geht nat\u00fcrlich zulasten der Ausf\u00fchrungsgeschwindigkeit. In Python kann man zwei unterschiedliche Varianten w\u00e4hlen, um den Interpreter aufzurufen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interaktiver Modus<\/li>\n\n\n\n<li>Skript-Modus<\/li>\n<\/ul>\n\n\n\n<p>Im interaktiven Modus gibt man die Befehle direkt ein und erh\u00e4lt nach Bet\u00e4tigung der Return-Taste unmittelbar das Ergebnis. Den interaktiven Modus erkennt man an den drei Gr\u00f6\u00dfer-als-Zeichen (&gt;&gt;&gt;) in Thonny<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild&nbsp;1)<\/mark>. Hier werden Eingaben direkt verarbeitet:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>&gt;&gt;&gt; print(\"Good Morning, Dr. Falken\")\nGood Morning, Dr. Falken<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1132\" height=\"352\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python4.jpg\" alt=\"\" class=\"wp-image-6485\" style=\"width:600px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python4.jpg 1132w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python4-300x93.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild1_Python4-768x239.jpg 768w\" sizes=\"auto, (max-width: 1132px) 100vw, 1132px\" \/><figcaption class=\"wp-element-caption\">Bild 1: Arbeiten in der Shell<\/figcaption><\/figure>\n\n\n\n<p>Auch eine LED (z. B. am Port&nbsp;24 eines Raspberry Pi) kann auf diese Weise ein- bzw. ausgeschaltet werden <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild&nbsp;2)<\/mark>. Das kann sehr n\u00fctzlich sein, um Hardware schnell und sicher zu \u00fcberpr\u00fcfen, ohne dass ein spezielles Programm erstellt werden muss.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1132\" height=\"386\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python4.jpg\" alt=\"\" class=\"wp-image-6486\" style=\"width:600px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python4.jpg 1132w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python4-300x102.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild2_Python4-768x262.jpg 768w\" sizes=\"auto, (max-width: 1132px) 100vw, 1132px\" \/><figcaption class=\"wp-element-caption\">Bild 2: Schalten einer LED \u00fcber die Shell<\/figcaption><\/figure>\n\n\n\n<p>Umfangreichere Programme dagegen werden im Programmfenster eingegeben. Sie k\u00f6nnen mit der Taste F5 gestartet werden<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild&nbsp;3)<\/mark>. Dies ist das \u00fcbliche Vorgehen, wenn l\u00e4ngere Code-Sequenzen abgearbeitet werden m\u00fcssen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1132\" height=\"508\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python4.jpg\" alt=\"\" class=\"wp-image-6487\" style=\"width:600px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python4.jpg 1132w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python4-300x135.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild3_Python4-768x345.jpg 768w\" sizes=\"auto, (max-width: 1132px) 100vw, 1132px\" \/><figcaption class=\"wp-element-caption\">Bild 3: Abarbeiten eines Programms im Editor<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Kommentare helfen, Programme zu verstehen<\/h2>\n\n\n\n<p>In jeder Programmiersprache sind erl\u00e4uternde Kommentare wichtig. Nur so wei\u00df man auch Monate oder Jahre sp\u00e4ter noch, was ein bestimmter Programmabschnitt bewirkt, ohne dass man sich jedes mal wieder neu in alle Details vertiefen muss.<\/p>\n\n\n\n<p>Es ist nicht notwendig, jede Programmzeile einzeln zu kommentieren. Erfahrene Codierer sollten in der Lage sein, einzelne Anweisungen auch ohne Kommentar zu verstehen. Nur bei besonderen Konstrukten oder ungew\u00f6hnlichen bzw. innovativen Code-Zeilen empfiehlt sich ein einzelner Zeilenkommentar. Bei Unterprogrammen oder ganzen logischen Programmabschnitten dagegen darf eine kurze Erl\u00e4uterung zur Funktionsweise nicht fehlen.<\/p>\n\n\n\n<p>Einfache Kommentare beginnen mit # und enden mit dem Zeilenende:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; print(\"hello RasPi\") # this is a comment\n          hello RasPi<\/code><\/pre>\n\n\n\n<p>Mehrzeilige Kommentare k\u00f6nnen auch mit einem 3-fachen &#8222;-Zeichen (&#8222;&#8220;&#8220;) gekennzeichnet werden. Dieselbe Zeichenfolge beendet dann den Kommentar:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          \"\"\"\n          erste Kommentarzeile\n          zweite Kommentarzeile\n          \"\"\"<\/code><\/pre>\n\n\n\n<p>In der Praxis kann das so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          \"\"\"\n          This is a multi-line comment.\n          Prints hello world.\n          \"\"\"\n          print(\"hello world\")<\/code><\/pre>\n\n\n\n<p>Alternativ kann in Thonny auch die Kommentarfunktion verwendet werden. Sie erlaubt es, mehrere Zeilen gleichzeitig mit dem #-Zeichen als Kommentare zu kennzeichnen<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\"> (Bild 4)<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1398\" height=\"939\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python4.jpg\" alt=\"\" class=\"wp-image-6488\" style=\"width:700px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python4.jpg 1398w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python4-300x202.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild4_Python4-768x516.jpg 768w\" sizes=\"auto, (max-width: 1398px) 100vw, 1398px\" \/><figcaption class=\"wp-element-caption\">Bild 4: Kommentarfunktion in Thonny<\/figcaption><\/figure>\n\n\n\n<p>Die Kommentarfunktion eignet sich auch sehr gut dazu, bestimmte Programmteile \u201eauszukommentieren&#8220;. Wenn beispielsweise beim Test eines umfangreicheren Codes einzelne Abschnitte probeweise nicht ausgef\u00fchrt werden sollen, kann man diese mit Kommentarzeichen versehen. Die Zeilen werden dann vom Interpreter nicht mehr beachtet. Ein aufwendiges L\u00f6schen und sp\u00e4teres Wiedereinf\u00fcgen der Programmteile entf\u00e4llt.<\/p>\n\n\n\n<p>Kommentare helfen insbesondere auch Einsteigern, ein besseres Verst\u00e4ndnis f\u00fcr den Programmaufbau zu erlangen. Von der technischen Seite her gesehen haben sie keinerlei Einfluss auf den Programmablauf.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wie gedruckt: Die Print()-Anweisung<\/h2>\n\n\n\n<p>\u00dcber die Print()-Anweisungen k\u00f6nnen Informationen auf das Terminal ausgegeben werden. Der Befehl ist zum einen direkt im Terminal ausf\u00fchrbar, zum anderen dient er in Programmen zur Ausgabe textbasierter Informationen.<\/p>\n\n\n\n<p>Print() kann mehrere Zeichenfolgen haben, die durch &#8222;,&#8220; geteilt werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; print(\"hello\", \"world!\")\n          hello world!<\/code><\/pre>\n\n\n\n<p>Die Print()-Anweisung f\u00fchrt standardm\u00e4\u00dfig einen Zeilenwechsel aus. Mit<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          end = \"\"<\/code><\/pre>\n\n\n\n<p>kann dieser unterdr\u00fcckt werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          print(\"hello\", end=\" \")\n          print(\"world\")<\/code><\/pre>\n\n\n\n<p>Dies f\u00fchrt zu folgendem Ergebnis:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          hello world<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Klare Struktur: Einr\u00fcckungen und Bl\u00f6cke<\/h2>\n\n\n\n<p>Python unterscheidet verschiedene Bl\u00f6cke durch Einr\u00fcckung. Es ist nicht erforderlich, geschweifte Klammern (\u201e{}\u201c) oder \u00c4hnliches zu verwenden. Dies ist einer der wichtigsten Unterschiede zu den meisten anderen Sprachen wie C, Pascal, Basic etc. Der Vorteil dieser Methode ist, dass man praktisch zu einem gewissen Ma\u00df an Programmstruktur gezwungen wird:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          if True:\n           # block 01\n           print (\"True\")\n          else:\n           # block 02\n           print (\"False\")<\/code><\/pre>\n\n\n\n<p>Die Anzahl der Leerzeichen f\u00fcr Einr\u00fcckungen ist variabel, aber derselbe Block muss immer die gleiche Anzahl an Leerzeichen f\u00fcr Einr\u00fcckungen haben. Andernfalls wird eine Fehlermeldung ausgegeben:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          if True:\n           print (\"Answer\")\n           print (\"True\")\n          else:\n           print (\"Answer\")\n           print (\"False\") # The different indentation leads to a runtime error<\/code><\/pre>\n\n\n\n<p>Dies f\u00fchrt zu folgendem Hinweis:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; %Run -c $EDITOR_CONTENT\n          Traceback (most recent call last):\n           File \"&lt;stdin&gt;\", line 6\n          IndentationError: unexpected indent<\/code><\/pre>\n\n\n\n<p>In Bedingungen und Schleifen (s. u.) werden Bl\u00f6cke auf identische Art gebildet.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Zeitsteuerung und Sleep<\/h2>\n\n\n\n<p>Im Beispiel zur blinkenden LED wurde bereits die Delay-Anweisung verwendet. Diese ist im Modul \u201etime&#8220; enthalten und wird \u00fcber<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          import time<\/code><\/pre>\n\n\n\n<p>verf\u00fcgbar. Mit der Anweisung<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          time.sleep(seconds)<\/code><\/pre>\n\n\n\n<p>kann eine feste Verz\u00f6gerungszeit in Sekunden eingestellt werden. Alternativ kann auch nur der Sleep-Befehl selbst importiert werden:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          from time import sleep<\/code><\/pre>\n\n\n\n<p>Dann kann die Anweisung zu<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          sleep(seconds)<\/code><\/pre>\n\n\n\n<p>verk\u00fcrzt werden. Obwohl der Befehl auch f\u00fcr Sekundenbruchteile genutzt werden kann, empfiehlt es sich, f\u00fcr sehr kurze Verz\u00f6gerungszeiten die Anweisung<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          time.sleep_ms(Milliseconds)<\/code><\/pre>\n\n\n\n<p>zu verwenden, da diese f\u00fcr kleine Zeiten eine verbesserte Pr\u00e4zision aufweist. Der Nachteil dieser Funktionen ist, dass sie blockierend arbeiten. Das hei\u00dft, der Controller kann w\u00e4hrend der Wartezeit keine anderen Aufgaben ausf\u00fchren, da er mit dem Z\u00e4hlen von Prozessorzyklen ausgelastet ist. Als Alternative bietet sich die Verwendung von Interrupts oder anderen Programmiertechniken an. Details dazu finden sich in sp\u00e4teren Beitr\u00e4gen zu dieser Reihe.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wichtige Werte: Variablen und Konstanten<\/h2>\n\n\n\n<p>In Python ist es besonders einfach, Variablen zu erstellen. Es ist nicht erforderlich, den Datentyp der Variablen w\u00e4hrend der Zuweisung anzugeben. Dies ist ein wesentlicher Unterschied zu anderen Sprachen. Dort m\u00fcssen Variablen stets explizit mit einem bestimmten Typen initialisiert werden (z. B. int a = 1234&#8230;).<\/p>\n\n\n\n<p>Variablen sind auch in der Konsole einsetzbar:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; a = 17\n          &gt;&gt;&gt; print(a)\n          17<\/code><\/pre>\n\n\n\n<p>F\u00fcr Variablennamen sind die 26 Grundbuchstaben, also die Buchstaben von A bis Z ohne deutsche Sonderzeichen, verwendbar. Diese Grundbuchstaben k\u00f6nnen sowohl als Klein- als auch als Gro\u00dfbuchstaben eingesetzt werden. Wie in vielen professionellen Programmiersprachen wie C\/C++, Java oder auch C# wird auch in Python bei Funktionen, Methoden, Klassen, Schl\u00fcsselw\u00f6rtern etc. zwischen Kleinund Gro\u00dfschreibung unterschieden.<\/p>\n\n\n\n<p>Der Fachbegriff daf\u00fcr lautet \u201ecase-sensitive\u201c. \u00dcber denn Sinn gleichlautender Variablennamen, die sich nur in der Klein- bzw. Gro\u00dfschreibung von Buchstaben unterscheiden, kann man streiten. Die Erfahrung lehrt jedoch, dass die Verwendung gleicher Namen in unterschiedlichen Schreibweisen keine Vorteile bringt, sondern eher zu Fehlern f\u00fchrt.<\/p>\n\n\n\n<p>In Python gelten f\u00fcr die Vergabe von Variablennamen diese Regeln:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Der Variablenname darf nur Zahlen, Buchstaben und Unterstriche enthalten<\/li>\n\n\n\n<li>Das erste Zeichen einer Variablen muss ein Buchstabe oder ein Unterstrich sein<\/li>\n\n\n\n<li>Der Variablenname unterscheidet zwischen Gro\u00df- und Kleinschreibung<\/li>\n<\/ul>\n\n\n\n<p>Variablen k\u00f6nnen Werte verschiedener Typen zugewiesen werden. Die Typen in MicroPython umfassen Zahlen, Zeichenfolgen, Listen, W\u00f6rterb\u00fccher, Tupel usw. Mit type() kann der Datentyp von Variablen und Konstanten \u00fcberpr\u00fcft werden, z. B.<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; a = 17\n          &gt;&gt;&gt; print(type(a))\n          &lt;class 'int'&gt;\n\n          &gt;&gt;&gt; a, b, c, d = 17, 1.5, True, 5+7j\n          &gt;&gt;&gt; print(type(a), type(b), type(c), type(d))\n          &lt;class 'int'&gt; &lt;class 'float'&gt; &lt;class 'bool'&gt; &lt;class 'complex'&gt;<\/code><\/pre>\n\n\n\n<p>Zahlen wie 10, 100 oder Zeichenfolgen wie \u201eHello World!&#8220; sind Konstanten. MicroPython bietet das Schl\u00fcsselwort \u201econst&#8220; an, mit dem auch einer Variablen ein unver\u00e4nderlicher Wert zugewiesen wird:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          from micropython import const\n          a = const(33)<\/code><\/pre>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Tabelle 1<\/mark> zeigt einige Beispiel f\u00fcr erlaubte und nicht erlaubte Variablennamen.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">Tabelle 1:<\/h5>\n\n\n\n<figure class=\"wp-block-table has-text-small-font-size\"><table class=\"has-fixed-layout\"><thead><tr><th>Variable<\/th><th>erlaubt?<\/th><th>Kommentar<\/th><\/tr><\/thead><tbody><tr><td>a = 42<\/td><td>ja<\/td><td>sehr kurz, z. B. f\u00fcr Laufvariablen in Schleifen<\/td><\/tr><tr><td>Meine Variable = &#8218;Tst!&#8216;<\/td><td>ja<\/td><td><\/td><\/tr><tr><td>_messwert = 2233.44<\/td><td>ja<\/td><td><\/td><\/tr><tr><td>das_ist_c = 299792.458<\/td><td>ja<\/td><td><\/td><\/tr><tr><td>_321_123 = &#8218;Nicht sinnvoll&#8216;<\/td><td>ja<\/td><td>aber nicht selbsterkl\u00e4rend<\/td><\/tr><tr><td>42terWert = 1972<\/td><td>nein, da mit einer Ziffer beginnend<\/td><td><\/td><\/tr><tr><td>c$ = -111.222<\/td><td>nein, da mit Sonderzeichen<\/td><td><\/td><\/tr><tr><td>No@1 = &#8218;Erster!&#8216;<\/td><td>nein, da mit Sonderzeichen<\/td><td><\/td><\/tr><tr><td>Analoger Messwert22 = 12.345<\/td><td>nein, weil mit Leerzeichen<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reservierte W\u00f6rter und Namen<\/h2>\n\n\n\n<p>Bei der Namensvergabe kann man also seiner Kreativit\u00e4t nahezu freien Lauf lassen. Lediglich Schl\u00fcsselw\u00f6rter wie<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          print, for, while<\/code><\/pre>\n\n\n\n<p>d\u00fcrfen nicht verwendet werden. Zu beachten ist, dass diese Schl\u00fcsselw\u00f6rter in Python stets kleingeschrieben werden. Daneben haben sich einige Konventionen eingeb\u00fcrgert. Diese haben sich in der Praxis bew\u00e4hrt und sind zu einem Quasi-Standard geworden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Der Gro\u00dfbuchstabe \u201ei&#8220; wird m\u00f6glichst nicht verwendet, da er mit der Ziffer 1 verwechselt werden k\u00f6nnte.<\/li>\n\n\n\n<li>Der Gro\u00dfbuchstabe \u201eO&#8220;, wird im Allgemeinen nicht verwendet, da er mit der Ziffer 0 verwechselt werden k\u00f6nnte.<\/li>\n\n\n\n<li>Variablennamen werden durch Unterstriche strukturiert, z. B. meine_allerbeste_variable.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Verzweigungen und Schleifen<\/h2>\n\n\n\n<p>In Python sind alle auch bei anderen Sprachen \u00fcblichen Kontrollfluss-Anweisungen verf\u00fcgbar. Allerdings gibt es teilweise wichtige Unterschiede zu den klassischen Varianten.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">If-Anweisung<\/h3>\n\n\n\n<p>Einer der wichtigsten Befehle ist die \u201eif-else-elif-Anweisung&#8220;. Das folgende Beispiel stellt fest, ob eine Zahl gerade oder ungerade ist:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          x = 9\n\n          if x%2 == 0:\n           print(x, 'ist gerade')\n          else:\n           print(x, 'ist ungerade')<\/code><\/pre>\n\n\n\n<p>Eine If-Struktur kann keine, eine oder mehrere Elif-Teile enthalten. Das Schl\u00fcsselwort \u201eelif&#8220; ist eine Kurzschreibweise f\u00fcr \u201eelse if&#8220; und kann als Ersatz f\u00fcr Switch- oder Case-Anweisungen in anderen Sprachen dienen. Elif erm\u00f6glicht es, Variablen auf mehrere Werte zu \u00fcberpr\u00fcfen:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          x = 7\n\n          if x%2 == 0:\n           print(x, 'ist durch 2 teilbar')\n          elif x%3 == 0:\n           print(x, 'ist durch 3 teilbar')\n          else:\n           print(x, 'ist weder durch 2 noch durch 3 teilbar')<\/code><\/pre>\n\n\n\n<p>Das Struktogramm in <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">Bild 5<\/mark> veranschaulicht den Einsatz von if und elif. Um festzustellen, welche Art von if-Anweisung verwendet werden soll, sollte man die folgenden Richtlinien beachten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>if-else-Anweisung:<\/strong> Alternativen schlie\u00dfen sich gegenseitig aus. Das bedeutet, wenn eine Alternative wahr ist, m\u00fcssen die anderen Alternativen falsch sein.<\/li>\n\n\n\n<li><strong>If-elif-else-Anweisung:<\/strong> Alternativen schlie\u00dfen sich nicht gegenseitig aus. Es ist also m\u00f6glich, dass mehr als eine Alternative gleichzeitig wahr ist. Eine Zahl kann z. B. sowohl durch zwei als auch durch drei teilbar sein.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"736\" height=\"756\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python4.jpg\" alt=\"\" class=\"wp-image-6489\" style=\"width:350px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python4.jpg 736w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild5_Python4-292x300.jpg 292w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><figcaption class=\"wp-element-caption\">Bild 5: If und elif<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">While<\/h3>\n\n\n\n<p>Die While-Schleife erm\u00f6glicht es, einen Block so lange auszuf\u00fchren, wie eine bestimmte Bedingung wahr ist:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          while Bedingung:\n           # Code-Block, der wiederholt ausgef\u00fchrt wird,\n           solange die Bedingung wahr ist<\/code><\/pre>\n\n\n\n<p>Die Bedingung wird vor jedem Durchlauf der Schleife \u00fcberpr\u00fcft. Wenn die Bedingung wahr ist, wird der Code-Block innerhalb der Schleife ausgef\u00fchrt. Wenn die Bedingung falsch ist, wird der Code-Block \u00fcbersprungen. Innerhalb des Code-Blocks kann man Variablen \u00e4ndern, die die Bedingung beeinflussen. Dadurch kann man die Schleife beenden, wenn eine bestimmte Bedingung erf\u00fcllt wird.<\/p>\n\n\n\n<p>Dabei ist es wichtig, sicherzustellen, dass sich die Bedingung irgendwann \u00e4ndert, damit die Schleife nicht unendlich lang (\u201eEndlosschleife\u201c) ausgef\u00fchrt wird. Das folgende Programm l\u00e4sst eine LED mithilfe der While-Anweisung genau 10x an Port 24 blinken (blink_10.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import RPi.GPIO as GPIO\nimport time\n\nLedPin = 24\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(LedPin, GPIO.OUT)\n\ncounter = 0\n\nwhile counter &lt; 10:\n print(\"Counter:\", counter)\n counter += 1\n GPIO.output(LedPin, GPIO.LOW)\n time.sleep(0.5)\n GPIO.output(LedPin, GPIO.HIGH)\n time.sleep(0.5)\n\nprint(\"Schleife beendet!\")\nGPIO.output(LedPin, GPIO.LOW)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">For-Anweisungen<\/h3>\n\n\n\n<p>Die For-Anweisung in Python unterscheidet sich von den Versionen in C oder Pascal. Anstatt stets \u00fcber eine arithmetische Folge von Zahlen zu iterieren oder eine Schrittweite und Endbedingung zu definieren, iteriert die For-Anweisung in Python \u00fcber die Elemente einer Sequenz (z. B. einer Liste oder eines Strings):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          a = &#91;'Hans', 'Peter', 'Maximilian']\n          for x in a:\n           print(x, len(x))\n\n          &gt;&gt;&gt;\n          Hans 4\n          Peter 5\n          Maximilian 10<\/code><\/pre>\n\n\n\n<p>Die Verwendung von Listen als Laufindex erm\u00f6glicht auch die einfache Umsetzung komplexer Schleifen, die so in anderen Programmiersprachen nicht m\u00f6glich w\u00e4ren (list.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>list_of_lists = &#91; &#91;1, 2, 3], &#91;'a', 'b', 'c'], &#91;'Anna', 'Berta', 'Claudia']]<br>          for list in list_of_lists:<br>           for x in list:<br>            print(x)<br><br>          <\/code><\/pre>\n\n\n\n<p>liefert<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-fd55b7b0a2e3bf0587ee7631344abc13\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>list_of_lists = &#91; &#91;1, 2, 3], &#91;'a', 'b', 'c'], &#91;'Anna', 'Berta', 'Claudia']]\n          for list in list_of_lists:\n           for x in list:\n            print(x)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Die Range()-Funktion<\/h3>\n\n\n\n<p>Um \u00fcber die klassische Folge von Zahlen zu iterieren, kann die Funktion range() verwendet werden. Sie erzeugt Listen, die arithmetischen Aufz\u00e4hlungen entsprechen:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; range(10)\n          &#91;0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<\/code><\/pre>\n\n\n\n<p><strong>Wichtig:<\/strong> Der angegebene Endpunkt ist nie Teil der erzeugten Liste. Range(10) erzeugt eine Liste von 10 Werten, also exakt die g\u00fcltigen Indizes f\u00fcr Elemente einer Sequenz der L\u00e4nge 10. Es ist m\u00f6glich, den Bereich bei einer anderen Zahl starten zu lassen oder eine andere ganzzahlige Schrittweite anzugeben, wobei hier auch negative Schrittweiten zul\u00e4ssig sind:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; range(5, 10)\n          &#91;5, 6, 7, 8, 9]\n          &gt;&gt;&gt; range(0, 10, 3)\n          &#91;0, 3, 6, 9]\n          &gt;&gt;&gt; range(-10, -100, -30)\n          &#91;-10, -40, -70]<\/code><\/pre>\n\n\n\n<p>Um die Indizes einer Sequenz zu durchlaufen, kombiniert man range() und len() wie folgt:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          &gt;&gt;&gt; a = &#91;'Mary', 'had', 'a', 'little', 'lamb']\n          &gt;&gt;&gt; for i in range(len(a)):\n          print i, a&#91;i]\n          0 Mary 1 had 2 a 3 little 4 lamb<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Praxis\u00fcbung: SOS mit if_elif und for<\/h2>\n\n\n\n<p>Im folgenden Programm werden die in den vorstehenden Abschnitten vorgestellten Strukturen praktisch umgesetzt (SOS.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import RPi.GPIO as GPIO\nimport time\n\nled_pin = 18\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(led_pin, GPIO.OUT)\n\ndot_duration = 0.2\ndash_duration = 0.5\npause_duration = 0.3\n\nsos_morse = \"... --- ...\"\n\ntry:\n for _ in range(3):\n  for symbol in sos_morse:\n   if symbol == \".\":\n    GPIO.output(led_pin, GPIO.HIGH)\n    time.sleep(dot_duration)\n   elif symbol == \"-\":\n    GPIO.output(led_pin, GPIO.HIGH)\n    time.sleep(dash_duration)\n   else:\n    time.sleep(pause_duration)\n   GPIO.output(led_pin, GPIO.LOW)\n   time.sleep(pause_duration)\n  time.sleep(pause_duration * 7)\nexcept KeyboardInterrupt:\n pass\nfinally:\n GPIO.cleanup()<\/code><\/pre>\n\n\n\n<p>Das Programm verwendet die RPi.GPIO-Bibliothek, um auf die GPIO-Pins des Raspberry Pi zuzugreifen. Um die Ausgabe sichtbar zu machen, muss eine LED mit Vorwiderstand, ein LED-Modul oder der LED-Cluster an Pin 18 angeschlossen werden <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild 6)<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-bordered\" style=\"margin-top:0;margin-bottom:0\"><img loading=\"lazy\" decoding=\"async\" width=\"1506\" height=\"962\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python4.jpg\" alt=\"\" class=\"wp-image-6490\" style=\"object-fit:cover\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python4.jpg 1506w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python4-300x192.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild6_Python4-768x491.jpg 768w\" sizes=\"auto, (max-width: 1506px) 100vw, 1506px\" \/><figcaption class=\"wp-element-caption\">Bild 6: Ein LEDCluster erzeugt ein weithin sichtbares SOS-Signal!<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Das Programm definiert die Dauer f\u00fcr einen Punkt, einen Strich und die Pausen zwischen den Morsezeichen.<br><strong>sos_morse = &#8222;&#8230; &#8212; ..&#8220;<\/strong><\/p>\n\n\n\n<p>Mithilfe der If\/Elif-Anweisung werden die Zeichen interpretiert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201e.&#8220; liefert ein kurzes Leuchtzeichen (Punkt)<\/li>\n\n\n\n<li>\u201e-&#8220; liefert ein langes Leuchtzeichen (Strich)<\/li>\n<\/ul>\n\n\n\n<p>Schlie\u00dflich wird der SOS-Morsecode dreimal wiederholt, mit einer Pause zwischen den \u201eW\u00f6rtern&#8220;.<\/p>\n\n\n\n<p>Das Programm wird durch Dr\u00fccken von Strg+C beendet und die GPIO-Einstellungen werden zur\u00fcckgesetzt.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Break- und Continue-Anweisungen<\/h2>\n\n\n\n<p>Die Break-Anweisung bricht aus der kleinsten umgebenden For- oder While-Schleife aus. Die Continue-Anweisung setzt die Schleife mit der n\u00e4chsten Iteration fort. Sie wird ausgef\u00fchrt, wenn die Schleife vollst\u00e4ndig durch die Liste gelaufen ist (mit for) oder wenn die Bedingung falsch wird (mit while), aber nicht, wenn die Schleife durch eine Break-Anweisung terminiert wird. Dies wird bei der folgenden Schleife deutlich, die die Position des ersten negativen Elements in einer Liste findet:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          numbers = &#91;10, 20, -5, 30, 40, -3, 50]\n\n          for i, num in enumerate(numbers):\n           if num &lt; 0:\n            print(\"Das erste negative Element befindet sich an der Position:\", i)\n            break<\/code><\/pre>\n\n\n\n<p>Wenn die Break-Anweisung fehlt, werden f\u00e4lschlicherweise alle negativen Elemente ausgegeben.<\/p>\n\n\n\n<p>Das folgende Programm soll alle geraden Zahlen von 0 bis 9 au\u00dfer 4 ausgeben:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>print(\"Gerade Zahlen von 0 bis 9, au\u00dfer 4:\")\nfor i in range(10):\n if i == 4:\n  continue # \u00dcberspringe die aktuelle Iteration und fahre mit der n\u00e4chsten fort\n if i % 2 == 0:\n  print(i)<\/code><\/pre>\n\n\n\n<p>In diesem Beispiel wird eine For-Schleife verwendet, um Zahlen von 0 bis 9 zu durchlaufen. Wenn die Variable i den Wert 4 erreicht, wird die Anweisung continue ausgef\u00fchrt. Dadurch wird die aktuelle Iteration \u00fcbersprungen und die Schleife f\u00e4hrt mit der n\u00e4chsten Iteration fort, ohne den nachfolgenden Code auszuf\u00fchren. Dadurch wird die Zahl 4 nicht gedruckt, die anderen geraden Zahlen von 0 bis 8 werden jedoch korrekt ausgegeben.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pass-Anweisungen<\/h2>\n\n\n\n<p>Die Pass-Anweisung tut nichts. Sie kann benutzt werden, wenn eine Anweisung syntaktisch notwendig ist, ohne dass das Programm wirklich etwas tun muss. Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          print(\"Endlos...\")\n          while 1:\n           pass<\/code><\/pre>\n\n\n\n<p>Dieses Programm l\u00e4uft solange, bis es mit CTRL-C unterbrochen wird. Auch zur Messung von Zeiten kann \u201epass\u201c verwendet werden. Das folgende Programm gibt z. B. die Zeit zwischen zwei Tastereignissen (an Port 24) aus und kann als einfache Stoppuhr verwendet werden (pass.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import RPi.GPIO as GPIO\nimport time\n\nGPIO.setwarnings(False)\nGPIO.setmode(GPIO.BCM)\nreadoutPort=24\nGPIO.setup(readoutPort, GPIO.IN, pull_up_down=GPIO.PUD_UP)\n\nwhile 1:\n tStart = time.time()\n while GPIO.input(readoutPort) &gt; 0:\n  pass\n tStop = time.time()\n T = tStop-tStart\n print(f\"Zeit seit letztem Tastendruck: {T:.{2}f} s\")\n time.sleep(1)<\/code><\/pre>\n\n\n\n<p>Das Pass-Statement wird oft verwendet, um eine Stelle in einem Code zu kennzeichnen, an der syntaktisch eine Anweisung erforderlich ist, aber zun\u00e4chst noch keine Anweisungen bekannt sind:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          # Eine Schleife, die vor\u00fcbergehend keine Operationen enth\u00e4lt\n          for i in range(5):\n           pass # Hier k\u00f6nnte sp\u00e4ter Code hinzugef\u00fcgt werden<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Eingabe mit Input<\/h2>\n\n\n\n<p>Die Input()-Funktion erm\u00f6glicht es dem Benutzer, Daten von der Konsole einzugeben:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          import math\n\n          eingabe = input(\"Bitte geben Sie eine Zahl ein: \")\n\n          # Konvertiere die Eingabe in eine Ganzzahl\n          zahl = float(eingabe)\n\n          print(\"Die eingegebene Zahl ist:\", zahl)\n          print(\"Die Quadratwurzel der eingegebene Zahl ist:\", math.sqrt(zahl))<\/code><\/pre>\n\n\n\n<p>In diesem Beispiel wird der Benutzer aufgefordert, eine Zahl einzugeben. Die Eingabe wird als Zeichenfolge (str) von input() zur\u00fcckgegeben. Dann wird die eingegebene Zeichenfolge in eine Zahl (float) konvertiert, damit sie f\u00fcr Berechnungen verwendet werden kann.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Definition von Funktionen und \u201eDocstrings\u201c<\/h2>\n\n\n\n<p>Funktionen sind benannte Code-Bl\u00f6cke, die eine bestimmte Aufgabe ausf\u00fchren. Sie sind ein wesentliches Konzept in der Programmierung, da sie Code wiederverwendbar machen, die Lesbarkeit verbessern und komplexe Programme in kleinere, handhabbare Teile aufteilen. Eine Funktion wird in Python mit dem Def-Schl\u00fcsselwort festgelegt, gefolgt vom Funktionsnamen und optionalen Parametern in runden Klammern. Abschlie\u00dfend ist ein Doppelpunkt erforderlich:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          def gr\u00fc\u00dfe(name):\n           print(\"Hallo,\", name)<\/code><\/pre>\n\n\n\n<p>Funktionen k\u00f6nnen Parameter akzeptieren, die als Eingabe f\u00fcr die Funktion dienen. Diese Parameter sind Platzhalter f\u00fcr Werte, die der Funktion \u00fcbergeben werden, wenn sie aufgerufen wird.<\/p>\n\n\n\n<p>Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          def quadrat(zahl):\n           return zahl * zahl<\/code><\/pre>\n\n\n\n<p>Eine Funktion wird mit ihrem Namen aufgerufen. Die erforderlichen Argumente werden in runden Klammern \u00fcbergeben:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\"><code>          gr\u00fc\u00dfe(\"Max\")\n          ergebnis = quadrat(5)<\/code><\/pre>\n\n\n\n<p style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">Man kann sogenannte Dokumentationszeichenfolgen (\u201eDocstrings&#8220;) verwenden, um eine Funktion zu dokumentieren, damit andere Benutzer verstehen, was die Funktion tut und wie sie verwendet werden soll:<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          def quadrat(zahl):\n           \"\"\"Berechnet das Quadrat einer gegebenen Zahl.\"\"\"\n           return zahl * zahl<\/code><\/pre>\n\n\n\n<p>Docstrings sind Zeichenfolgen, die als Dokumentation direkt innerhalb des Quellcodes von Python-Funktionen platziert werden. Ihr Zweck ist es, dem Benutzer Informationen \u00fcber die Verwendung und Funktionalit\u00e4t des Codes bereitzustellen.<\/p>\n\n\n\n<p>Docstrings werden unmittelbar nach der Definition einer Funktion platziert und in dreifachen Anf\u00fchrungszeichen (&#8222;&#8220;&#8220; &#8222;&#8220;&#8220;) eingeschlossen. Sie enthalten im Allgemeinen eine Beschreibung der Funktion sowie Informationen \u00fcber Parameter und R\u00fcckgabewerte.<\/p>\n\n\n\n<p>In oben stehendem Beispiel ist der Docstring &#8222;&#8220;&#8220;Berechnet das Quadrat einer gegebenen Zahl.&#8220;&#8220;&#8220; die Kurzdokumentation f\u00fcr die Funktion quadrat(). Wenn zu dieser Funktion Hilfe ben\u00f6tigt wird, kann man die integrierte Help()-Funktion verwenden, um den Docstring anzuzeigen <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-blue-color\">(Bild 7)<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-bordered\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)\"><img loading=\"lazy\" decoding=\"async\" width=\"1518\" height=\"488\" src=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python4.jpg\" alt=\"\" class=\"wp-image-6491\" style=\"width:850px\" srcset=\"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python4.jpg 1518w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python4-300x96.jpg 300w, https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Bild7_Python4-768x247.jpg 768w\" sizes=\"auto, (max-width: 1518px) 100vw, 1518px\" \/><figcaption class=\"wp-element-caption\">Bild 7: Hilfefunktion mit Docstrings<\/figcaption><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Die Help()-Funktion ruft den Docstring der Funktion auf und gibt ihn im Terminal aus. Das Hinzuf\u00fcgen von Docstrings zu einem Code ist bew\u00e4hrte Praxis, um die Wartbarkeit von Funktionen zu verbessern.<\/p>\n\n\n\n<p>Das folgende Beispiel zeigt die praktische Anwendung einer mathematischen Funktion. Diese liefert die pythagoreische Summe zweier Zahlen, also die L\u00e4nge der Hypotenuse eines rechtwinkligen Dreiecks, wenn die beiden anderen Seitenl\u00e4ngen bekannt sind (pytago.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>import math\n\ndef pythagoreische_summe(a, b):\n \"\"\"Berechnet die pythagoreische Summe zweier Zahlen.\"\"\"\n ergebnis = math.sqrt(a**2 + b**2)\n return ergebnis\n\nx = 3\ny = 4\n\nprint(\"Die pythagoreische Summe von\", x, \"und\", y, \"ist:\", pythagoreische_summe(x, y))<\/code><\/pre>\n\n\n\n<p>Die Funktion kann nun an allen Stellen, an denen eine pythagoreische Summe erforderlich ist, einfach ersetzt werden durch den Funktionsaufruf pythagoreische_summe. <br>Auch der rekursive Aufruf von Funktionen ist m\u00f6glich. Das bedeutet, dass Funktionen sich selbst aufrufen k\u00f6nnen. Ein wichtiges Beispiel f\u00fcr einen rekursiven Funktionsaufruf ist die Erzeugung von Fibonacci-Zahlen. Dabei handelt es sich um eine Sequenz von Zahlen, bei der jede Zahl die Summe der beiden vorherigen Zahlen ist. Die ersten Fibonacci-Zahlen lauten: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 &#8230; Fibonacci-Zahlen sind in verschiedenen Bereichen der Mathematik, Informatik und Naturwissenschaften von Bedeutung. Die Fibonacci-Folge l\u00e4sst sich am einfachsten mit einer rekursiven Funktion erzeugen (Fibonacci.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>def fibonacci_rekursiv(n):\n if n &lt;= 1:\n  return n\n else:\n  return fibonacci_rekursiv(n - 1) + fibonacci_rekursiv(n - 2)\n\nfor n in range(10):\n print(\"Die\", n+1, \"-te Fibonacci-Zahl ist:\", fibonacci_rekursiv(n))<\/code><\/pre>\n\n\n\n<p>Man erkennt, dass sich die Funktion f\u00fcr n-1 und n-2 selbst aufruft, um zum Ergebnis f\u00fcr n zu kommen. Ein anderes Beispiel ist die Berechnung der Quadratwurzel einer Zahl (heron.py):<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>def quadratwurzel_von_2_iterativ():\n # Startwert f\u00fcr die Iteration\n x = 1.0\n # Anzahl der Iterationen\n iterations = 10\n\n # Iterationsschleife\n for _ in range(iterations):\n  # Heron-Verfahren: Verbessere die Sch\u00e4tzung der Quadratwurzel von 2\n  x = 0.5 * (x + 2 \/ x)\n\n return x\n\nergebnis = quadratwurzel_von_2_iterativ()\nprint(\"Quadratwurzel von 2 (iterativ):\", ergebnis)<\/code><\/pre>\n\n\n\n<p>Dieser rekursive Algorithmus ist als Heron-Verfahren bekannt und liefert sehr schnell gute N\u00e4herungen f\u00fcr Quadratwurzeln. Abschlie\u00dfend sei noch auf das Schl\u00fcsselwort \u201eglobal&#8220; hingewiesen. Dieses erlaubt es, eine Variable innerhalb einer Funktion als globale Variable zu behandeln. Das bedeutet, dass die betreffende Variable auch au\u00dferhalb der Funktion gelesen und modifiziert werden kann.<\/p>\n\n\n\n<p>Im folgenden Beispiel teilt \u201eglobal x&#8220; Python mit, dass x auf die globale Variable x verweist und nicht auf eine lokale Variable innerhalb der Funktion. Daher wirkt sich eine \u00c4nderung an x innerhalb der Funktion auch auf die globale Variable x aus.<\/p>\n\n\n\n<pre class=\"wp-block-code has-black-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><code>          x = 10\n\n          def meine_funktion():\n           global x\n           x += 5\n           print(\"Innerhalb der Funktion:\", x)\n\n          meine_funktion()\n          print(\"Au\u00dferhalb der Funktion:\", x)<\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group has-gray-lightest-100-background-color has-background is-layout-constrained wp-container-core-group-is-layout-da470a24 wp-block-group-is-layout-constrained\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--40);padding-bottom:0;padding-left:var(--wp--preset--spacing--40)\">\n<h2 class=\"wp-block-heading\">\u00dcbungen und Anregungen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Schalten Sie eine LED genau 7x ein und aus:\n\t\t\n\t\n<ul class=\"wp-block-list\">\n<li>einmal interaktiv in der Shell<\/li>\n\n\n\n<li>einmal programmgesteuert<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>N\u00e4hern Sie die Zahl Pi als Quotienten zweier Integervariablen an!<\/li>\n\n\n\n<li>Ersetzen Sie eine Elif-Konstruktion im SOS-Programm durch reine If\/Else-Schleifen!<\/li>\n\n\n\n<li>Ist das immer m\u00f6glich? &#8211; Wo liegt der Vorteil von \u201eelif&#8220;?<\/li>\n\n\n\n<li>Berechnen Sie die Quadratwurzel von 2024 mit einem iterativen Funktionsaufruf!<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ausblick<\/h2>\n\n\n\n<p>In diesem Beitrag wurden die wichtigsten Programmstrukturen von Python erl\u00e4utert und praktisch erprobt. Nach dem Durcharbeiten des Artikels ist man nun bestens vorbereitet, auch etwas anspruchsvollere Aufgaben zu l\u00f6sen. <br>Im n\u00e4chsten Beitrag sollen die neuen Erkenntnisse eingesetzt werden, um Python in der Elektronikpraxis effizient und nutzbringend einzusetzen. Eine der wichtigsten Aufgaben von digitalen Systemen ist die Erfassung von Mess- und Umweltdaten. Vor ihrer digitalen Verarbeitung m\u00fcssen diese in eine bin\u00e4re Form konvertiert werden. Dies kann mit Analog-Digital-Umsetzern erreicht werden. Der n\u00e4chste Artikel wird sich eingehend mit der Technik der Analog-Digital-Umsetzung und ihrer Umsetzung mit Python befassen.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Material<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Raspberry Pi mit Netzteil<\/li>\n<\/ul>\n\n\n<div class=\"alignnone wp-block-dhsv-product-teaser\">\n    <div data-component=\"ProductTeaser\" data-props=\"{&quot;productIds&quot;:&quot;155858&quot;,&quot;view&quot;:&quot;list&quot;,&quot;align&quot;:&quot;none&quot;,&quot;slider&quot;:false,&quot;sliderMobile&quot;:false}\"><\/div>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-gray-lightest-100-background-color has-background\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\"><strong>\u00dcber den Autor<br><\/strong>Dr. G\u00fcnter Spanner ist als Autor zu den Themen Elektronik, Sensortechnik und Mikrocontroller einem weiten Fachpublikum bekannt. Schwerpunkt seiner hauptberuflichen T\u00e4tigkeit f\u00fcr verschiedene Gro\u00dfkonzerne wie Siemens und ABB ist die Projektleitung im Bereich Entwicklung und Technologie-Management. Der Dozent fu\u0308r Physik und Elektrotechnik hat zudem zahlreiche Fachartikel und Bu\u0308cher vero\u0308ffentlicht sowie Kurse und Lernpakete erstellt.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Von Kommentaren bis Funktionen: Dieser Teil zeigt die wichtigsten Python-Programmstrukturen \u2013 if\/elif\/else, while &#038; for, break\/continue\/pass, input(), Docstrings \u2013 mit praxisnahen GPIO-Beispielen auf dem Raspberry Pi inkl. SOS-Morsecode.<\/p>\n","protected":false},"author":30,"featured_media":864,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[34],"tags":[959,962,957,958,956,952,955,951,954,953,961,960],"post-author":[137],"class_list":["post-4355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-micropython","tag-break-continue-pass","tag-docstrings","tag-input","tag-python-ablauflogik","tag-python-einrueckung","tag-python-for-range","tag-python-funktionen-definieren","tag-python-if-elif-else","tag-python-kommentare","tag-python-while-schleife","tag-raspberry-pi-python","tag-rpi-gpio-beispiel","post-author-dr-guenter-spanner"],"acf":[],"info":{"thumbnail":{"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/header_phyton_teil11.jpg","alt":""},"teaserImage":{"ID":4828,"id":4828,"title":"liste-beitrag_python_t4_neu","filename":"Liste-Beitrag_python_t4_neu.jpg","filesize":96744,"url":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","link":"https:\/\/de.elv.com\/elvjournal\/einstieg-in-python-teil-4-ablaufsteuerung-und-programmstrukturen\/liste-beitrag_python_t4_neu\/","alt":"","author":"5","description":"","caption":"","name":"liste-beitrag_python_t4_neu","status":"inherit","uploaded_to":4355,"date":"2025-09-29 12:19:16","modified":"2025-09-29 12:21:52","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/elvjournal.elv.com\/wp-includes\/images\/media\/default.png","width":433,"height":274,"sizes":{"thumbnail":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu-250x250.jpg","thumbnail-width":250,"thumbnail-height":250,"medium":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu-300x190.jpg","medium-width":300,"medium-height":190,"medium_large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","medium_large-width":433,"medium_large-height":274,"large":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","large-width":433,"large-height":274,"1536x1536":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","1536x1536-width":433,"1536x1536-height":274,"2048x2048":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","2048x2048-width":433,"2048x2048-height":274,"gform-image-choice-sm":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":190,"gform-image-choice-md":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","gform-image-choice-md-width":400,"gform-image-choice-md-height":253,"gform-image-choice-lg":"https:\/\/elvjournal.elv.com\/wp-content\/uploads\/Liste-Beitrag_python_t4_neu.jpg","gform-image-choice-lg-width":433,"gform-image-choice-lg-height":274}},"categories":[{"id":34,"name":"Python &amp; MicroPython","slug":"python-micropython"}],"authors":[{"id":137,"name":"Dr. G\u00fcnter Spanner","slug":"dr-guenter-spanner"}],"document":false,"epaper":"","date":"22. Februar 2026","excerpt":"Von Kommentaren bis Funktionen: Dieser Teil zeigt die wichtigsten Python-Programmstrukturen \u2013 if\/elif\/else, while & for, break\/continue\/pass, input(), Docstrings \u2013 mit praxisnahen GPIO-Beispielen auf dem Raspberry Pi inkl. SOS-Morsecode."},"_links":{"self":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/comments?post=4355"}],"version-history":[{"count":10,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4355\/revisions"}],"predecessor-version":[{"id":14191,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/posts\/4355\/revisions\/14191"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/media\/864"}],"wp:attachment":[{"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/media?parent=4355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/categories?post=4355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/tags?post=4355"},{"taxonomy":"post-author","embeddable":true,"href":"https:\/\/de.elv.com\/elvjournal\/wp-json\/wp\/v2\/post-author?post=4355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}