{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hinweise\n", "Versuche, zu jedem Code-Beispiel eigene Veränderungen zu machen, um dich besser in das Programmieren hinein denken zu können. Programmieren kann man nur lernen, wenn man es macht. So wie bei allen anderen Fertigkeiten, die man sich erarbeitet, muss man üben. Erst dann kann man verstehen. \n", "Es ist sinnvoll, vorher schon ein paar Techniken der Programmierung kennengelernt zu haben. [Scratch](https://scratch.mit.edu/) ist eine Möglichkeit, wie man recht einfach Grundlagen der Programmierung erlernen kann. \n", "## Aufbau eines Pythonprogramms\n", "Ein Pythonprogramm beginnt üblicherweise mit dem Import von benötigten Funktionen. Z.B. wird in dieser Zeile die Bibliothek 'math' eingebunden, mit deren Hilfe man mit Zeit rechnen kann: \n", "Verändere den Namen des Moduls, das importiert werden soll. Du wirst sehen, dass es eine Fehlermeldung gibt, wenn das Modul nicht existiert. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Wenn es keine Fehlermeldung gab, dann hat der Import funktioniert.\n" ] } ], "source": [ "\n", "import math\n", "\n", "# Ab hier kommt der Programmcode.\n", "print(\"Wenn es keine Fehlermeldung gab, dann hat der Import funktioniert.\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In der Informatik gibt es den Begriff der \"Hallo Welt!\"- Programme. Damit ist ein einfaches Programm gemeint, das nur den Text \"Hallo Welt!\" ausgibt. Es dient als Testprogramm, ob die Programmiersprache installiert ist und funktioniert. Es dient auch als Einstieg in die Programmierung mit dieser Sprache. Hier ist so ein Programm.\n", "Verändere doch mal den Text. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hallo Welt!\n" ] } ], "source": [ "print(\"Hallo Welt!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Definieren von Funktionen\n", "Funktionen in Python sind definierte Codebereiche, die aber erst ausgeführt werden, wenn sie aufgerufen wurden. In diesem Fall hier gibt die Funktion mit dem Befehl `return` ein Ergebnis zurück. Die Zahlen `a` und `b`, die addiert werden sollen, werden als Parameter übergeben. Diese werden in den runden Klammern der Funktion bekanntgegeben (initialisiert). \n", "Die Funktionen sind mit Blöcken in Scratch vergleichbar." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a+b ergeben: 9999\n" ] } ], "source": [ "# Hier stehen die Imports, wenn sie benötigt werden.\n", "import math # Wird allerdings für die grundlgegenden Funktionen nicht benötigt. \n", "\n", "# Definition der Addition.\n", "def add(a,b):\n", " return a+b\n", "\n", "# a = int(input(\"Erste Zahl eingeben: \")) die Funktion int() wird benötigt, um aus der Eingabe eine Zahl zu machen. Wenn du keine Zahl eingibst, dann wird hier ein Fehler ausgegeben. \n", "# b = int(input(\"Zweite Zahl eingeben: \"))\n", "ergebnis = add(1,2) # Das Ergebnis wird in einer Variablen gespeichert.\n", "print(\"a+b ergeben: \"+ str(ergebnis)) # Das Ergebnis wir auf der Konsole ausgegeben." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wie du sehen kannst, ist der Befehl `return` eingerückt. Dies muss auch sein, sonst funktioniert das Programm nicht. Probier es ruhig aus. In Python werden mit den Einrückungen Codeblöcke, die zusammengehören, markiert. Andere Programmiersprachen benutzen hierfür z. B. Klammern. \n", "Entferne die Kommentarzeichen der beiden Zeilen beginnend mit a und b. Schreibe das Programm so um, dass nun die Zahlen verwendet werden, die du in der Eingabe eingibst. \n", "\n", "a) Jetzt schreibe selber eine Funktion, die a-b rechnet.\n", "\n", "b) Schreibe auch hier das Programm so um, dass du die Zahlen eingeben kannst. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "\n", "ergebnis = sub(1,2) # Das Ergebnis wird in einer Variablen gespeichert.\n", "print(\"1-2 ergeben: \"+ str(ergebnis)) # Das Ergebnis wir auf der Konsole ausgegeben." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Code, der in einer Python-Datei steht wird in der Reihenfolge ausgeführt, in der er steht. \n", "Code, der in einem `def`-Block steht, wird erst dann ausgeführt, wenn er im Programm aufgerufen wird. Daher müssen die Definitionen auch vor dem Code stehen, der ihn aufruft. \n", "Korrigiere den nachfolgenden Code: \n", "\n", "(Die print-Funktion in diesem Beispiel hat eine andere Formatierung. Du kannst frei wählen, welche du benutzt.)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Das ist deine Zahl: 4\n" ] } ], "source": [ "zahl = input(\"Bitte gib eine Zahl zwischen 1 und 10 ein.\")\n", "print(number(zahl))\n", "\n", "def number(z):\n", " return f\"Das ist deine Zahl: {z}\"\n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Funktionen müssen nicht unbedingt Werte mit `return` zurückgeben. Sie können auch einfach nur einen Teil der Programmfunktion übernehmen. Hier gibt die Funktion nur den Willkommensgruß nach dem Start des Programms aus. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Programm startet ...\n", "Willkommen bei meinem tollen Programm\n" ] } ], "source": [ "def hello():\n", " print(\"Willkommen bei meinem tollen Programm\")\n", " \n", "print(\"Programm startet ...\")\n", "hello()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wie man hier sieht, wurde der Funktion auch kein Parameter übergeben. Jetzt wollen wir die Funktion etwas intelligenter gestalten. Dazu benötigen wir eine Liste mit zugelassenen Usern für dieses Programm (siehe Variablen)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Programm startet ...\n", "Bitte gib deinen Benutzernamen ein.Mr J\n", "Willkommen bei meinem tollen Programm\n" ] } ], "source": [ "def hello(u):\n", " users = [\"Mr J\", \"Gamer32\", \"NoClue01\"]\n", " if u in users:\n", " print(\"Willkommen bei meinem tollen Programm\")\n", " else: \n", " print(\"Du darfst hier nicht sein. \")\n", " \n", "print(\"Programm startet ...\")\n", "user = input(\"Bitte gib deinen Benutzernamen ein.\")\n", "hello(user)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Natürlich könnten wir auch mit einem Rückgabewert arbeiten, damit das Programm auch erfährt, ob die Anmeldung funktioniert hat oder nicht. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Programm startet ...\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "Interrupted by user", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[4], line 9\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mProgramm startet ...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 9\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43minput\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mBitte gib deinen Benutzernamen ein.\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m hello(user):\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWillkommen bei meinem tollen Programm\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/ipykernel/kernelbase.py:1282\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[0;34m(self, prompt)\u001b[0m\n\u001b[1;32m 1280\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1281\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[0;32m-> 1282\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_input_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1283\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mprompt\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1284\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_parent_ident\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mshell\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1285\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_parent\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mshell\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1286\u001b[0m \u001b[43m \u001b[49m\u001b[43mpassword\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 1287\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/ipykernel/kernelbase.py:1325\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[0;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[1;32m 1322\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[1;32m 1323\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[1;32m 1324\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1325\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1326\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[1;32m 1327\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: Interrupted by user" ] } ], "source": [ "def hello(u):\n", " users = [\"Mr J\", \"Gamer32\", \"NoClue01\"]\n", " if u in users:\n", " return True\n", " else: \n", " return False\n", " \n", "print(\"Programm startet ...\")\n", "user = input(\"Bitte gib deinen Benutzernamen ein.\")\n", "if hello(user):\n", " print(\"Willkommen bei meinem tollen Programm\")\n", "else: \n", " print(\"Du darfst hier nicht sein. \")\n", " exit(1) # Dieser Befehl würde das Programm an dieser Stelle mit dem Fehlercode 1 beenden. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Es ist wichtig, Funktionen und Variablen sinnvolle Namen zu geben. Die Funktion `hello()` hat keinen sinnvollen Namen. Man muss sich überlegen, welche Funktion im Programm die `Funktion()` haben soll. In diesem Fall soll überprüft werden, ob der User im System bekannt ist. Ein Name wie `is_user()` oder `valid_user()` wären hier sinnvoller. Ändere daher den Namen `hello()` in etwas sinnvolles und sofge dafür, dass das Programm noch funktioniert. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Variablen\n", "Die Variablen, die wir bisher benutzt haben, haben entweder Zahlen oder Buchstaben enthalten. Je nachdem, welchen Inhalt sie haben, kann man unterschiedliche Dinge mit ihnen tun. \n", "Mit Zahlen kann man rechnen: " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "a=1 # Probiere hier auch gerne andere Zahlen aus. \n", "b=2\n", "print(a+b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was passiert aber, wenn wir Variablen addieren, die Buchstaben enthalten?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "a=\"Hallo\"\n", "b=\"Leute\"\n", "print(a+b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Genau, die Inhalte der Variablen werden einfach miteinander verkettet. Das ist zum Beispiel dann praktisch, wenn man eine Programmausgabe zusammenbauen möchte, die unterschiedlich ausfällt, je nachdem, wie das Programm abläuft. In der Programmierung spricht man bei diesem Datentyp von Strings. \n", "\n", "### Folgende Regeln gelten für die Benennung von Variablen: \n", "+ Eine Variable beginnt mit einem Buchstaben oder mit einem Unterstrich. Um Probleme zu vermeiden, sollen nur englische Buchstaben verwendet werden. \n", "+ Der Variablenname darf keine Sonderzeichen außer dem Unterstrich einhalten. \n", "+ Variablennamen unterscheiden Groß-/Kleinschreibung. `fruit` und `Fruit` sind unterschiedliche Variablen.\n", "#### Sinnvolle Konventionen für Variablennamen\n", "+ Variablen beginnen mit einem Kleinbuchstaben.\n", "+ Konstanten (Variablen, die sich im Laufe des Programms nicht ändern) bestehen aus Großbuchstaben.\n", "+ Bei einer Verkettung von verschiedenen Wörtern trennt man die Wörter mit einem Unterstrich. Beispiel: `my_very_complicated_variable`. Diese Schreibweise heißt snake_case.\n", "+ In anderen Programmiersprachen wird auch CamelCase verwendet: `myVeryComplicatedVariable` \n", "\n", "### Listen (optionales Kapitel)\n", "Ein anderer Typ von Variable ist die Liste. In einer Liste können beliebig viele Elemente eingefügt und aus- oder eingelesen werden. \n", "Beispiel: " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fruit = [\"Apples\", \"Bananas\", \"Raspberries\"]\n", "myGrades = [3, 4, 2, 5]\n", "\n", "for x in fruit:\n", " print (x)\n", "\n", "sum =0\n", "for x in myGrades:\n", " sum +=x\n", " print (x)\n", "\n", "medianGrade = sum/len(myGrades)\n", "\n", "print(\"Durchschnitt: \", medianGrade)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bedingungen\n", "\n", "Ein weiteres wichtiges Element aller Programmiersprachen sind Bedingungen. Wenn die gegebene Bedinung erfüllt ist, dann wird der Code in dem Bereich ausgeführt. \n", "\n", "Als Beispiel dient eine einfache Passwortabfrage (siehe auch oben: Abfrage des Benutzernamens):" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Du bekommst keinen Zugang.\n" ] } ], "source": [ "def password_correct(passwd):\n", " if passwd == \"1234\":\n", " return True\n", " else:\n", " return False\n", " \n", "if password_correct(input (\"Passwort eingeben: \")):\n", " # Hier läuft das Programm ab. \n", " pass\n", "else:\n", " print(\"Kein Zugang\")\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vergleichsoperatoren\n", "```\n", "==\n", "!=\n", "<\n", ">\n", "<=\n", ">=\n", "```\n", "Hier ist ein Beispiel für eine Vergleichsoperation. Schreibe für die anderen Vergleichsoperatoren auch Vergleiche." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "Die Werte sind nicht gleich\n" ] } ], "source": [ "print(3==4)\n", "a=3\n", "b=4\n", "if a == b: \n", " print(\"Die Werte sind gleich.\")\n", "else:\n", " print(\"Die Werte sind nicht gleich.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Schleifen\n", "Schleifen wiederholen Code, der in ihnen enthalten ist. Jeder Durchlauf einer Schleife nennt heißt \"Iteration\". Dabei gibt es zwei grundsätzliche Möglichkeiten: \n", "Schleifen prüfen mit jedem Durchlauf, ob eine Bedingung erfüllt/nicht erfüllt ist und brechen gegebenenfalls ab, oder sie zählen bis zu einem bekannten Wert und brechen dann ab. Die erste Möglichkeit wird durch eine While-Schleife reallisiert. \n", "### While-Schleifen\n", "In dem folgenden Beispiel ist eine Endlosschleife dabei. Das bedeutet, dass das Programm nie normal beendet wird. Du musst daher das Programm selbst beenden, in dem du auf den Stop-Knopf drückst, der neben dem Code oder in der oberen Menüleiste erscheint. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "10\n", "Die Schleife ist durchgelaufen.\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n", "Schleifendurchlauf\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[2], line 11\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;241m2\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;241m3\u001b[39m\u001b[38;5;241m==\u001b[39m\u001b[38;5;241m5\u001b[39m:\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSchleifendurchlauf\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 11\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.1\u001b[39;49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "import time\n", "i=0\n", "while i < 10:\n", " i+=1 # Hier wird der Wert der Variablen i um 1 erhöht. Man kann das auch so schreiben: i = i + 1\n", " print(i)\n", "print(\"Die Schleife ist durchgelaufen.\")\n", "\n", "# Dieser Code wird unendlich lange ausgeführt, da die Bedingung immer wahr ist. \n", "while True:\n", " print(\"Schleifendurchlauf\")\n", " time.sleep(0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Schreibe in die Bedingun der zweiten `while`-Schleife andere Bedingungen, die immer wahr sind. Z. B. 1==1 oder 2+3==5. \n", "Das Gegenteil von `True`ist übrigens `False`. Jede Bedingung, die überprüft wird, endet immer in entweder `True`oder `False`. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## For-Schleifen\n", "Bei For-Schleifen ist beim ersten Durchgang schon klar, wie viele Iterationen es geben wird. Im ersten Beispiel wird von 0 bis 9 gezählt. Das erledigt die Funktion `range()`. \n", "In den anderen Beispieln wird bei jedem Durchgang ein Element einer Liste ausgegeben und beim letzen Beispiel werden die Buchstaben im String `s` einzeln ausgegeben. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for i in range (10):\n", " pass \n", "print(\"Die Schleife ist durchgelaufen.\")\n", "\n", "fruit = [\"Apples\", \"Bananas\", \"Raspberries\"] \n", "for x in fruit:\n", " print(x)\n", "\n", "## Iteration über einen String\n", "s = \"Theodor-Heuss-Schule\"\n", "for i in s:\n", " print(i)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.7" } }, "nbformat": 4, "nbformat_minor": 2 }