{ "cells": [ { "cell_type": "markdown", "id": "5ead5284", "metadata": {}, "source": [ "# Vorkurs Tag 2- Lösungen\n", "\n", "Author: Christian Reichhardt \n", "\n", "adaptiert von: https://colab.research.google.com/drive/1svCNXzWYD8Ok-1ZtPxghamLhUGjVqhBX\n", "\n", "**Hinweis:** Es gibt meistens keine richtigen oder falschen Lösungen, möglicherweise sind andere Lösungen ebenso gut. Wir zeigen euch nur einen unserer Meinung nach guten Weg." ] }, { "cell_type": "markdown", "id": "621270a0", "metadata": {}, "source": [ "### Aufgabe 2.1\n", "\n", "Welchen booleschen Wert ergeben die folgenden Ausdrücke: (hier ist keine Programmierung gefragt - einfach mit Stift und Papier beantworten)" ] }, { "cell_type": "code", "execution_count": 9, "id": "af5dd699", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3<5: True\n" ] } ], "source": [ "print(\"3<5: \", 3<5)" ] }, { "cell_type": "code", "execution_count": 10, "id": "522c93c1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True & False: False\n" ] } ], "source": [ "print(\"True & False: \", True & False)" ] }, { "cell_type": "code", "execution_count": 11, "id": "d4ca3c26", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False & False: False\n" ] } ], "source": [ "print(\"False & False: \", False & False)" ] }, { "cell_type": "code", "execution_count": 12, "id": "57c0278f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False | False: False\n" ] } ], "source": [ "print(\"False | False: \", False | False)" ] }, { "cell_type": "code", "execution_count": 13, "id": "04f6df78", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(15 % 5) == 3: False\n" ] } ], "source": [ "print(\"(15 % 5) == 3: \", (15 % 5) == 3)" ] }, { "cell_type": "code", "execution_count": 14, "id": "90ad487e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(5 // 4) == 1 : True\n" ] } ], "source": [ "print(\"(5 // 4) == 1 : \", (5 // 4) == 1 )\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "b8a66d58", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True & (not True): False\n" ] } ], "source": [ "print(\"True & (not True): \", True & (not True))" ] }, { "cell_type": "code", "execution_count": 16, "id": "d4725edd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(True | False) & (True | True): True\n" ] } ], "source": [ "print(\"(True | False) & (True | True): \", (True | False) & (True | True))" ] }, { "cell_type": "code", "execution_count": 17, "id": "5023416b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1==2 & (3!=4)) | (1<2): True\n" ] } ], "source": [ "print(\"(1==2 & (3!=4)) | (1<2): \", (1==2 & (3!=4)) | (1<2))" ] }, { "cell_type": "code", "execution_count": 18, "id": "bdc7a9f0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(7<5) & (2==(9/4)): False\n" ] } ], "source": [ "print(\"(7<5) & (2==(9/4)): \", (7<5) & (2==(9/4)))" ] }, { "cell_type": "markdown", "id": "3660e211", "metadata": {}, "source": [ "## Aufgabe 2.2\n", "\n", "Welche der folgenden Aussagen sind richtig (hier ist keine Programmierung gefragt - einfach mit Stift und Papier beantworten)\n", "\n", "- Wenn **(a | b)** **True** ist, ist mindestens eine der Variablen **True**. ✅\n", "- Wenn **(a & b) True** ist, sind beide Variablen **True**. ✅\n", "- Wenn **(a & b) False** ist, sind beide Variablen **False**. ❌\n", "- Wenn **(a | b) False** ist, sind beide Variablen **False**. ✅\n", "- Wenn **!(a & b) False** ist, ist keine der beiden Variablen **True**. ❌\n", "- Wenn **!(a | b) False** ist, sind beide Variablen **True**. ❌\n", "- **(a & b) | (not (a & b))** ist immer **True**. ✅" ] }, { "cell_type": "markdown", "id": "9448e2ea", "metadata": {}, "source": [ "## Aufgabe 2.3\n", "\n", "Sind folgende Kommentare sinvoll (mit Begründung)?" ] }, { "cell_type": "code", "execution_count": 19, "id": "1926f5c4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Alkohol nicht verkaufen\n" ] } ], "source": [ "age = 15 # setzen einer Variable age (A)\n", "\n", "# Überprüft ob Alkohol verkauft werden darf (B)\n", "if age > 17:\n", " print(\"Alkohol verkaufen\")\n", "else:\n", " print(\"Alkohol nicht verkaufen\")" ] }, { "cell_type": "markdown", "id": "fc4e7ab2", "metadata": {}, "source": [ "- (A) ist nicht sinnvoll\n", "- (B) ist sinnvoll" ] }, { "cell_type": "markdown", "id": "9c6f6ab8", "metadata": {}, "source": [ "## Aufgabe 2.4\n", "\n", "Gib eine Bedingung an, die für einen int-Wert x wahr wird, wenn dieser über 25 liegt und eine ungerade Zahl ist.\n", "\n", "*Hinweis:* Bei der Prüfung auf eine ungerade Zahl ist der Modulo-Operator `%` hilfreich" ] }, { "cell_type": "code", "execution_count": 20, "id": "d17bad60", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "False\n", "False\n", "False\n" ] } ], "source": [ "x = 26\n", "\n", "# entweder:\n", "print((x > 25) and (x%2 ==1))\n", "\n", "# oder:\n", "print((x > 25) and (x%2 !=0))\n", "\n", "# oder (weil assoziativ):\n", "print((x%2 !=0) and (x > 25))\n", "\n", "print(bool(x> 25 and x%2))" ] }, { "cell_type": "markdown", "id": "980c9e5b", "metadata": {}, "source": [ "## Aufgabe 2.5\n", "\n", "Ein Schaltjahr ist ein Jahr, dessen Jahreszahl restlos durch vier teilbar ist. Eine Ausnahme bilden die vollen Jahrhundertjahre, deren Jahreszahl durch 100 teilbar ist: Diese sind nur dann ein Schaltjahr, wenn ihre Jahreszahl auch durch 400 teilbar ist. \n", "\n", "Gib einen booleschen Ausdruck an, der für einen Integer-Wert `jahr` genau dann wahr wird, wenn es sich bei dem in `jahr` gespeicherten Wert um die Jahreszahl eines Schaltjahres handelt." ] }, { "cell_type": "code", "execution_count": 21, "id": "c8d1c3a0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kein Schaltjahr\n" ] } ], "source": [ "jahr = 1900\n", "\n", "if jahr % 100 == 0:\n", " if jahr % 400 == 0:\n", " print(\"Schaltjahr\")\n", " else:\n", " print(\"kein Schaltjahr\")\n", "elif jahr % 4 == 0:\n", " print(\"Schaltjahr\")\n", "else:\n", " print(\"Kein Schaltjahr\")\n", "\n", "# oder in einer Zeile:\n", "if ((jahr % 4 == 0) and (jahr % 100 != 0)) or (jahr % 400 == 0):\n", " print(\"Schaltjahr\")" ] }, { "cell_type": "markdown", "id": "d460cf0e", "metadata": {}, "source": [ "## Aufgabe 2.6\n", "\n", "Ergänze die leeren Stellen (____) so, dass Frauen und Männer bei der Begrüßung unterschieden\n", "werden:" ] }, { "cell_type": "code", "execution_count": 22, "id": "bec5c245", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hallo Herr Meier\n" ] } ], "source": [ "male = True\n", "name = \"Meier\"\n", "\n", "if male == True:\n", " print(f'Hallo Herr {name}')\n", "else:\n", " print(f'Hallo Frau {name}')" ] }, { "cell_type": "markdown", "id": "9132423f", "metadata": {}, "source": [ "## Aufgabe 2.7\n", "\n", "Finde den Fehler im Code." ] }, { "cell_type": "code", "execution_count": 23, "id": "0e63f9d5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Deine Fahrt dauerte sehr lange!\n" ] } ], "source": [ "dauer = 10\n", "if dauer >= 10:\n", " print(f\"Deine Fahrt dauerte sehr lange!\")\n", "elif dauer == 3:\n", " print(\"Deine Fahrt dauerte 3 Stunden\")\n", "else:\n", " print(\"Fahrtdauer unbekannt\")" ] }, { "cell_type": "markdown", "id": "69335f5e", "metadata": {}, "source": [ "## Aufgabe 2.8\n", "\n", "Schreibe ein Programm, das abhängig von einem Winkel (positiver Integer Wert) eine der vier Himmelsrichtung Norden, Osten, Süden oder Westen ausgibt. Norden liegt dabei auf 0◦. Es reicht, wenn Winkel von 0◦ bis 359◦ verarbeitet werden können.\n", "\n", "![Himmelsrichtungen](https://www.spektrum.de/lexika/images/geogr/fff55_w.jpg)\n", "\n", "Quelle: https://www.spektrum.de/lexika/images/geogr/fff55_w.jpg" ] }, { "cell_type": "code", "execution_count": 24, "id": "ae69f89b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Westen\n" ] } ], "source": [ "winkel = 230\n", "\n", "if winkel <= 135 & winkel > 44:\n", " print(\"Osten\")\n", "elif winkel <= 225 & winkel > 135:\n", " print(\"Süden\")\n", "elif winkel in range(226,316):\n", " print(\"Westen\")\n", "else:\n", " print(\"Norden\")" ] }, { "cell_type": "markdown", "id": "8e94ca0e", "metadata": {}, "source": [ "## Aufgabe 2.9\n", "\n", "Programmiere ein Quizspiel, welches seine Nutzer 6 Fragen stellt, die sie alle richtig beantworten müssen um zu gewinnen. Pro Frage gibt es 4 Antwortmöglichkeiten, die von A bis D durchnummeriert sind. Der Nutzer gibt jeweils den Buchstaben der richtigen Antwort ein. Die nächste Frage wird erst gestellt, wenn die vorherige richtig beantwortet wurde. \n", "\n", "Stelle das Quiz deinem Nachbar:in vor und lass ihn:sie spielen.\n", " \n", "Bonuspunkte wenn ihr den Informatik-Fragen benutzt 😉" ] }, { "cell_type": "code", "execution_count": null, "id": "a2cb7c0c", "metadata": {}, "outputs": [], "source": [ "print(\"Willkommen zu meinem wunderbaren Quiz!\")\n", "\n", "print(\"Hier ist die erste Frage: \\n 1 - Wie heißt der logische Operator, der True wird, wenn beide Bedingungen True sind? \")\n", "print(\" A) or \\n B) and \\n C) xor \\n D) pommes\")\n", "\n", "input_frage_1 = input(\"Gebe A, B, C oder D ein: \")\n", "if input_frage_1 == \"B\": \n", " print(\"Das war richtig! 🥳\")\n", " print(\"Hier ist die zweite Frage: \\n 2 - Welchen Datentyp wählt man um 3.5 darzustellen? \")\n", " print(\" A) integer \\n B) bool \\n C) float \\n D) str\")\n", "\n", " input_frage_2 = input(\"Gebe A, B, C oder D ein: \")\n", " if input_frage_2 == \"C\": \n", " print(\"Das war richtig! 🥳\")\n", " print(\"Hier ist die dritte Frage: \\n 3 - Mit welchem Symbol werden zwei Strings konkateniert? \")\n", " print(\" A) - \\n B) * \\n C) % \\n D) +\")\n", "\n", " input_frage_3 = input(\"Gebe A, B, C oder D ein: \")\n", " if input_frage_3 == \"D\": \n", " print(\"Das war richtig! 🥳\")\n", " print(\"Hier ist die vierte Frage: \\n 4 - Wie nennt man die Art und Weise der Typisierung in Python? \")\n", " print(\" A) dynamisch \\n B) manuell \\n C) automatisch \\n D) statisch\")\n", "\n", " input_frage_4 = input(\"Gebe A, B, C oder D ein: \")\n", " if input_frage_4 == \"A\": \n", " print(\"Das war richtig! 🥳\")\n", " print(\"Hier ist die fünfte Frage: \\n 5 - Welcher der Operatoren ist kein Vergleichsoperator? \")\n", " print(\" A) <= \\n B) != \\n C) & \\n D) ==\")\n", "\n", " input_frage_5 = input(\"Gebe A, B, C oder D ein: \")\n", " if input_frage_5 == \"C\": \n", " print(\"Das war richtig! 🥳\")\n", " print(\"Hier ist die sechste Frage: \\n 6 - Welcher logischer Operator hat die schwächste Präzedenz? \")\n", " print(\" A) or \\n B) and \\n C) not \\n D) xor\")\n", "\n", " input_frage_6 = input(\"Gebe A, B, C oder D ein: \")\n", " if input_frage_6 == \"A\": \n", " print(\"Das war richtig! 🥳\")\n", " print(\"Herzlichen Glückwunsch, du hast gewonnen!\")\n", " else: \n", " print(\"Das war leider falsch. 😭\")\n", " else: \n", " print(\"Das war leider falsch. 😭\")\n", " else: \n", " print(\"Das war leider falsch. 😭\")\n", " else: \n", " print(\"Das war leider falsch. 😭\")\n", " else: \n", " print(\"Das war leider falsch. 😭\")\n", "else: \n", " print(\"Das war leider falsch. 😭\")\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "dd148ce8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Du hast verloren! Nicht mal die erste Frage...\n" ] } ], "source": [ "a1 = input(\"Woher kommt der Name Python?\\nA: Guido van Rossum, der Erfinder, wurde im Urlaub von einer Schlange gebissen\\nB: Von der Kreiszahl PI\\nC: Von der britischen Komikertruppe Monty Python\\nD: Als Acronym aus den Englischen Wörtern 'Pyrotechnical Theorem'\\n\")\n", "if a1 == (\"C\" or \"c\"):\n", " print (\"Richtig! Aber erst der Anfang:\")\n", " a2 = input(\"True and not False or False ergibt was?\\nA: True\\nB: False\\nC: 0\\nD: Compiler Error\\n\")\n", " if a2 == (\"A\" or \"a\"):\n", " print (\"Richtig! Weiter gehts:\")\n", " a3 = input(\"Was passiert wenn man `import this` in python ausführt?\\nA: ein Gedicht über Python erscheint\\nB: Stack Overflow Error\\nC: Der PC fährt herunter\\nD: Eine Illustration einer Schlange erscheint\\n\")\n", " if a3 == (\"A\" or \"a\"):\n", " print (\"Richtig! Gar nicht schlecht:\")\n", " a4 = input(\"Was passiert beim import: `from __future__ import braces?\\nA: Man kann in Python Klammern verwenden wie in Java\\nB: Syntax error: not a chance\\nC: Man kann verschiedene Emojis importieren\\nD: Gar nichts\\n\")\n", " if a4 == (\"B\" or \"b\"):\n", " print (\"Richtig! Fast geschafft:\")\n", " a5 = input(\"Wann erschien Python 1.0?\\nA: 2010\\nB: 1966\\nC: 2001 (das Jahr der Schlange im chinesischen Horoskop)\\nD: 1994\\n\")\n", " if a5 == (\"D\" or \"d\"):\n", " print(\"WINNER! Respekt.\")\n", " else:\n", " print(\"Du hast verloren! So knapp.\")\n", " else:\n", " print(\"Du hast verloren! Aber nicht schlecht.\")\n", " else:\n", " print(\"Du hast verloren! Immerhin einer.\")\n", " else:\n", " print(\"Du hast verloren! Haha !\")\n", "else:\n", " print(\"Du hast verloren! Nicht mal die erste Frage...\")" ] } ], "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.9.12" }, "vscode": { "interpreter": { "hash": "ad2bdc8ecc057115af97d19610ffacc2b4e99fae6737bb82f5d7fb13d2f2c186" } } }, "nbformat": 4, "nbformat_minor": 5 }