490 lines
27 KiB
HTML
490 lines
27 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg">
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Kapitel G04: Bedingungen & Verzweigungen</title>
|
||
<link rel="stylesheet" href="../../assets/style.css">
|
||
</head>
|
||
<body>
|
||
|
||
<div class="app-layout">
|
||
<aside class="app-sidebar">
|
||
<div class="sidebar-header">
|
||
<a href="../../index.html" class="sidebar-brand-link">
|
||
<div class="sidebar-logo">🐍</div>
|
||
<div>
|
||
<div class="sidebar-title">Python Portal</div>
|
||
<div class="sidebar-subtitle">Lernplattform</div>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<div class="sidebar-quick-nav">
|
||
<a href="../../index.html" class="sidebar-link">🏠 Startseite</a>
|
||
<a href="../../index.html#tutorial" class="sidebar-link">📖 Tutorial & Workflow</a>
|
||
<a href="../../index.html#zertifikate" class="sidebar-link">🏆 Zertifikate</a>
|
||
</div>
|
||
|
||
<div class="sidebar-nav">
|
||
<div class="sidebar-group">
|
||
<div class="sidebar-group-title">
|
||
<span>🌱 1. Grundlagen</span>
|
||
<span style="background: rgba(255,255,255,0.1); padding: 2px 6px; border-radius: 99px; font-size: 0.7rem;">G01–G10</span>
|
||
</div>
|
||
<div style="display: flex; flex-direction: column; gap: 2px;">
|
||
<a href="../../lehrpfad_1_grundlagen/01_erste_schritte_taschenrechner/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🧮</span>
|
||
<span class="sidebar-link-text">G01. Taschenrechner</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/02_variablen_und_datentypen/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">📦</span>
|
||
<span class="sidebar-link-text">G02. Variablen & Typen</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/03_ein_und_ausgabe/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">💬</span>
|
||
<span class="sidebar-link-text">G03. Ein- & Ausgabe</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/04_verzweigungen_und_bedingungen/index.html" class="sidebar-link active">
|
||
<span class="sidebar-link-icon">🚦</span>
|
||
<span class="sidebar-link-text">G04. Bedingungen (if)</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/05_schleifen_und_wiederholungen/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🎡</span>
|
||
<span class="sidebar-link-text">G05. Schleifen (for/while)</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/06_funktionen_und_module/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🪄</span>
|
||
<span class="sidebar-link-text">G06. Funktionen & Module</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/07_listen_und_sequenzen/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">📋</span>
|
||
<span class="sidebar-link-text">G07. Listen & Sequenzen</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/08_textverarbeitung_und_strings/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🔤</span>
|
||
<span class="sidebar-link-text">G08. String-Methoden</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/09_dictionaries_und_sets/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🗃️</span>
|
||
<span class="sidebar-link-text">G09. Dicts & Sets</span>
|
||
</a>
|
||
<a href="../../lehrpfad_1_grundlagen/10_comprehensions_datum_algorithmen/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🚀</span>
|
||
<span class="sidebar-link-text">G10. Comprehensions</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="sidebar-group">
|
||
<div class="sidebar-group-title">
|
||
<span>🏗️ 2. OOP Einstieg</span>
|
||
<span style="background: rgba(255,255,255,0.1); padding: 2px 6px; border-radius: 99px; font-size: 0.7rem;">00–06</span>
|
||
</div>
|
||
<div style="display: flex; flex-direction: column; gap: 2px;">
|
||
<a href="../../lehrpfad_2_oop_einstieg/00_fehlersuche_und_grundlagen/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🔍</span>
|
||
<span class="sidebar-link-text">00. Fehlersuche & Debug</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/01_einstieg_klassen/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🏗️</span>
|
||
<span class="sidebar-link-text">01. Einstieg in Klassen</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/02_init_und_self/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">⚙️</span>
|
||
<span class="sidebar-link-text">02. Konstruktor & self</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/03_methoden_und_verhalten/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🏎️</span>
|
||
<span class="sidebar-link-text">03. Methoden & Verhalten</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/04_str_und_darstellung/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🧾</span>
|
||
<span class="sidebar-link-text">04. __str__ Darstellung</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/04b_umstieg_vscode/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">💻</span>
|
||
<span class="sidebar-link-text">04b. VS Code Setup</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/04c_git_und_versionskontrolle/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🌿</span>
|
||
<span class="sidebar-link-text">04c. Git-Versionskontrolle</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/05_objekte_kombinieren/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🎵</span>
|
||
<span class="sidebar-link-text">05. Objekte kombinieren</span>
|
||
</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/06_abschlussprojekt_tamagotchi/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🥚</span>
|
||
<span class="sidebar-link-text">06. Projekt: Tamagotchi</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="sidebar-group">
|
||
<div class="sidebar-group-title">
|
||
<span>🚀 3. Fortgeschritten</span>
|
||
<span style="background: rgba(255,255,255,0.1); padding: 2px 6px; border-radius: 99px; font-size: 0.7rem;">07–16</span>
|
||
</div>
|
||
<div style="display: flex; flex-direction: column; gap: 2px;">
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/07_referenzen_und_speicher/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🧠</span>
|
||
<span class="sidebar-link-text">07. Referenzen & Speicher</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/08_operator_overloading_dunder/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">➕</span>
|
||
<span class="sidebar-link-text">08. Operator Overloading</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/09_eigene_unit_tests_schreiben/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🧪</span>
|
||
<span class="sidebar-link-text">09. Unit Tests & TDD</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/10_vererbung_und_super/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🧬</span>
|
||
<span class="sidebar-link-text">10. Vererbung & super()</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/11_polymorphie_und_interfaces/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🎭</span>
|
||
<span class="sidebar-link-text">11. Polymorphie</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/12_exceptions_und_fehlerbehandlung/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🛡️</span>
|
||
<span class="sidebar-link-text">12. Exceptions & Fehler</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/13_persistenz_json_und_csv/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">💾</span>
|
||
<span class="sidebar-link-text">13. Persistenz (JSON/CSV)</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/14_gui_mit_tkinter/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🖥️</span>
|
||
<span class="sidebar-link-text">14. Desktop-GUIs (Tkinter)</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/15_parameter_und_container/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🎒</span>
|
||
<span class="sidebar-link-text">15. Container & *args</span>
|
||
</a>
|
||
<a href="../../lehrpfad_3_fortgeschrittenes_oop/16_master_abschlussprojekt/index.html" class="sidebar-link">
|
||
<span class="sidebar-link-icon">🏆</span>
|
||
<span class="sidebar-link-text">16. Master-Abschlussprojekt</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sidebar-footer">
|
||
<div style="display: flex; align-items: center; justify-content: space-between;">
|
||
<div style="font-size: 0.85rem; font-weight: 700; color: white;" id="sidebar-level-text">⭐ Level 1</div>
|
||
<div style="font-size: 0.82rem; font-weight: 700; color: #38bdf8;" id="sidebar-xp-text">0 XP</div>
|
||
</div>
|
||
</div>
|
||
</aside>
|
||
|
||
<div class="app-main">
|
||
<header>
|
||
<div class="header-container">
|
||
<nav class="nav-links">
|
||
<a href="../../index.html">🏠 Zur Kursübersicht</a>
|
||
<span>›</span>
|
||
<a href="../03_ein_und_ausgabe/index.html">← Kapitel G03</a>
|
||
<span>›</span>
|
||
<span style="color: white; font-weight: 600;">Kapitel G04</span>
|
||
<span>›</span>
|
||
<a href="../05_schleifen_und_wiederholungen/index.html">Kapitel G05 →</a>
|
||
</nav>
|
||
<div class="header-badge">Grundlagen G04 • Schulabgleich 08.0</div>
|
||
<h1>Bedingungen & Verzweigungen 🛤️🔀</h1>
|
||
<p>Lerne, wie dein Code mit <code>if</code>, <code>elif</code> und <code>else</code> intelligente Entscheidungen trifft und wie du logische Operatoren meisterst.</p>
|
||
</div>
|
||
</header>
|
||
<main class="container">
|
||
|
||
<!-- 📂 Schnellzugriff & Download aller Dateien dieser Einheit -->
|
||
<div style="background: #ffffff; border: 1px solid var(--border-color); border-radius: var(--radius-md); padding: 14px 20px; margin-bottom: 25px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; box-shadow: var(--shadow-sm);">
|
||
<div style="font-weight: 700; color: var(--text-main); display: flex; align-items: center; gap: 8px;">
|
||
<span>📂 Dateien dieser Einheit:</span>
|
||
</div>
|
||
<div style="display: flex; gap: 10px; flex-wrap: wrap;">
|
||
<a href="../../workspace.html?course=python&track=lehrpfad_1_grundlagen&chapter=04_verzweigungen_und_bedingungen" class="btn" style="background: #10b981; color: #fff; font-weight: 700;">💻 In Web-IDE öffnen →</a>
|
||
<a href="aufgabe.py" class="btn" style="padding: 6px 14px; font-size: 0.88rem; background: var(--primary);" download>📄 aufgabe.py (Startercode)</a>
|
||
<a href="test_aufgabe.py" class="btn btn-secondary" style="padding: 6px 14px; font-size: 0.88rem;" download>🧪 test_aufgabe.py (Tests)</a>
|
||
<a href="musterloesung.py" class="btn btn-secondary" style="padding: 6px 14px; font-size: 0.88rem;" download>💡 musterloesung.py (Lösung)</a>
|
||
<a href="README.md" class="btn btn-secondary" style="padding: 6px 14px; font-size: 0.88rem;">📖 README.md</a>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- 1. Analogie & Einführung -->
|
||
<section class="card">
|
||
<h2>1. Die Eisenbahn-Weichen-Analogie 🚂</h2>
|
||
|
||
<p>
|
||
Code wird standardmäßig von oben nach unten Zeile für Zeile ausgeführt. Doch oft soll ein Programm je nach Situation einen anderen Pfad einschlagen: Ein Kinokassen-System berechnet für Kinder einen anderen Preis als für Erwachsene.
|
||
</p>
|
||
|
||
<div class="box box-analogie">
|
||
<div class="box-title">🛤️ Das Eisenbahngleis & die Weichen:</div>
|
||
Stell dir den Programmlauf wie einen Zug vor, der auf ein Weichensystem zufährt:
|
||
<br>1. <strong>Das Signal (Bedingung):</strong> Die Weiche prüft: <em>"Ist das Alter unter 12?"</em>
|
||
<br>2. <strong>Grünes Signal (True):</strong> Der Zug biegt auf das Kindertarif-Gleis ab und führt dessen Code aus.
|
||
<br>3. <strong>Rotes Signal (False):</strong> Der Zug fährt weiter zur nächsten Weiche (<code>elif</code>).
|
||
<br>4. <strong>Das Ausweichgleis (else):</strong> Wenn keines der Signale grün war, nimmt der Zug das Standardgleis.
|
||
<br>5. <strong>Weiterfahrt:</strong> Hinter der Weichenanlage laufen alle Gleise wieder auf der Hauptstrecke zusammen!
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 2. Syntax & Vergleichsoperatoren -->
|
||
<section class="card">
|
||
<h2>2. Syntax von <code>if / elif / else</code> & Vergleichsoperatoren</h2>
|
||
|
||
<p>
|
||
In Python werden Verzweigungen mit Doppelpunkt <code>:</code> eingeleitet und der zugehörige Codeblock muss <strong>genau 4 Leerzeichen</strong> eingerückt sein.
|
||
</p>
|
||
|
||
<div class="code-container">
|
||
<div class="code-header">
|
||
<div class="code-dots">
|
||
<span class="code-dot dot-red"></span>
|
||
<span class="code-dot dot-yellow"></span>
|
||
<span class="code-dot dot-green"></span>
|
||
</div>
|
||
<span>Kino-Tarif-Weiche</span>
|
||
</div>
|
||
<pre><span class="kw">if</span> <span class="var">alter</span> < <span class="num">12</span>:
|
||
<span class="var">preis</span> = <span class="num">6.00</span> <span class="cm"># 4 Leerzeichen Einrückung</span>
|
||
<span class="kw">elif</span> <span class="var">alter</span> >= <span class="num">65</span>:
|
||
<span class="var">preis</span> = <span class="num">8.50</span>
|
||
<span class="kw">elif</span> <span class="var">ist_student</span>:
|
||
<span class="var">preis</span> = <span class="num">9.50</span>
|
||
<span class="kw">else</span>:
|
||
<span class="var">preis</span> = <span class="num">12.00</span></pre>
|
||
</div>
|
||
|
||
<div class="box box-warning">
|
||
<div class="box-title">⚠️ Häufige Fehlerquelle: = vs. ==</div>
|
||
- <code>=</code> (einfaches Istgleich) ist eine <strong>Zuweisung</strong>: <code>punkte = 10</code>.<br>
|
||
- <code>==</code> (doppeltes Istgleich) ist ein <strong>Vergleich</strong>: <code>if punkte == 10:</code>.
|
||
</div>
|
||
|
||
<h3>Die 6 Vergleichsoperatoren:</h3>
|
||
<div style="overflow-x: auto; margin: 15px 0;">
|
||
<table style="width: 100%; border-collapse: collapse; text-align: left; background: white; border-radius: 8px; overflow: hidden; box-shadow: var(--shadow-sm);">
|
||
<thead>
|
||
<tr style="background: var(--primary); color: white;">
|
||
<th style="padding: 10px 14px;">Operator</th>
|
||
<th style="padding: 10px 14px;">Bedeutung</th>
|
||
<th style="padding: 10px 14px;">Beispiel</th>
|
||
<th style="padding: 10px 14px;">Ergebnis</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr style="border-bottom: 1px solid var(--border-color);">
|
||
<td style="padding: 8px 14px;"><code>==</code></td>
|
||
<td style="padding: 8px 14px;">Gleich</td>
|
||
<td style="padding: 8px 14px;"><code>5 == 5</code></td>
|
||
<td style="padding: 8px 14px;"><strong style="color: var(--success);">True</strong></td>
|
||
</tr>
|
||
<tr style="border-bottom: 1px solid var(--border-color);">
|
||
<td style="padding: 8px 14px;"><code>!=</code></td>
|
||
<td style="padding: 8px 14px;">Ungleich</td>
|
||
<td style="padding: 8px 14px;"><code>5 != 3</code></td>
|
||
<td style="padding: 8px 14px;"><strong style="color: var(--success);">True</strong></td>
|
||
</tr>
|
||
<tr style="border-bottom: 1px solid var(--border-color);">
|
||
<td style="padding: 8px 14px;"><code><</code> / <code>></code></td>
|
||
<td style="padding: 8px 14px;">Kleiner als / Größer als</td>
|
||
<td style="padding: 8px 14px;"><code>10 < 20</code></td>
|
||
<td style="padding: 8px 14px;"><strong style="color: var(--success);">True</strong></td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding: 8px 14px;"><code><=</code> / <code>>=</code></td>
|
||
<td style="padding: 8px 14px;">Kleiner gleich / Größer gleich</td>
|
||
<td style="padding: 8px 14px;"><code>18 >= 18</code></td>
|
||
<td style="padding: 8px 14px;"><strong style="color: var(--success);">True</strong></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 3. Logische Operatoren & Wahrheitstabellen -->
|
||
<section class="card">
|
||
<h2>3. Logische Operatoren & Wahrheitstabellen 🧪</h2>
|
||
|
||
<p>
|
||
Bedingungen lassen sich mit <code>and</code>, <code>or</code> und <code>not</code> kombinieren:
|
||
</p>
|
||
|
||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 15px; margin: 15px 0;">
|
||
|
||
<!-- AND Tabelle -->
|
||
<div style="background: white; border: 1px solid var(--border-color); border-radius: 8px; padding: 14px; box-shadow: var(--shadow-sm);">
|
||
<h4 style="color: var(--primary); margin-bottom: 8px;"><code>and</code> (Beide wahr)</h4>
|
||
<table style="width: 100%; border-collapse: collapse; font-size: 0.88rem;">
|
||
<thead>
|
||
<tr style="background: var(--primary-light);">
|
||
<th style="padding: 4px 6px;">A</th>
|
||
<th style="padding: 4px 6px;">B</th>
|
||
<th style="padding: 4px 6px;">A and B</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px; color: var(--success); font-weight: bold;">True</td></tr>
|
||
<tr><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px; color: var(--danger);">False</td></tr>
|
||
<tr><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px; color: var(--danger);">False</td></tr>
|
||
<tr><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px; color: var(--danger);">False</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- OR Tabelle -->
|
||
<div style="background: white; border: 1px solid var(--border-color); border-radius: 8px; padding: 14px; box-shadow: var(--shadow-sm);">
|
||
<h4 style="color: var(--secondary); margin-bottom: 8px;"><code>or</code> (Mind. eins wahr)</h4>
|
||
<table style="width: 100%; border-collapse: collapse; font-size: 0.88rem;">
|
||
<thead>
|
||
<tr style="background: #e0f2fe;">
|
||
<th style="padding: 4px 6px;">A</th>
|
||
<th style="padding: 4px 6px;">B</th>
|
||
<th style="padding: 4px 6px;">A or B</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px; color: var(--success); font-weight: bold;">True</td></tr>
|
||
<tr><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px; color: var(--success); font-weight: bold;">True</td></tr>
|
||
<tr><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px; color: var(--success); font-weight: bold;">True</td></tr>
|
||
<tr><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px; color: var(--danger);">False</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- NOT Tabelle -->
|
||
<div style="background: white; border: 1px solid var(--border-color); border-radius: 8px; padding: 14px; box-shadow: var(--shadow-sm);">
|
||
<h4 style="color: var(--purple); margin-bottom: 8px;"><code>not</code> (Verneinung)</h4>
|
||
<table style="width: 100%; border-collapse: collapse; font-size: 0.88rem;">
|
||
<thead>
|
||
<tr style="background: var(--purple-light);">
|
||
<th style="padding: 4px 6px;">A</th>
|
||
<th style="padding: 4px 6px;">not A</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td style="padding: 4px 6px;">True</td><td style="padding: 4px 6px; color: var(--danger); font-weight: bold;">False</td></tr>
|
||
<tr><td style="padding: 4px 6px;">False</td><td style="padding: 4px 6px; color: var(--success); font-weight: bold;">True</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="box box-tipp">
|
||
<div class="box-title">💡 Tipp: Klammern setzen für klare Lesbarkeit</div>
|
||
Genau wie in der Mathematik gilt: Klammern <code>(...)</code> binden stärker und machen deinen Code absolut unmissverständlich!<br>
|
||
<code>darf_fahren = (groesse >= 140) or (groesse >= 120 and begleitung)</code>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 4. Deine Aufgaben -->
|
||
<section class="card">
|
||
<h2>4. 📝 Deine Aufgaben in <code><a href="aufgabe.py" style="color: inherit; text-decoration: underline;">aufgabe.py</a></code></h2>
|
||
|
||
<p>Öffne <code><a href="aufgabe.py" style="color: inherit; text-decoration: underline;">aufgabe.py</a></code> und setze folgende 4 Funktionen um:</p>
|
||
|
||
<ul class="task-list">
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t1">
|
||
<label for="t1" class="task-label">
|
||
<strong>TODO 1: <code>ticket_preis(alter: int, ist_student: bool) -> float</code></strong><br>
|
||
Berechne den Kinopreis: <code>alter < 12</code> → 6.00 €, <code>alter >= 65</code> → 8.50 €, sonst bei <code>ist_student == True</code> → 9.50 €, sonst → 12.00 €.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t2">
|
||
<label for="t2" class="task-label">
|
||
<strong>TODO 2: <code>schulnote_text(punkte: int) -> str</code></strong><br>
|
||
Notenspiegel: Ungültig bei <code>< 0</code> oder <code>> 100</code> ("Ungültige Punktezahl"), ab 90 ("Sehr gut"), ab 75 ("Gut"), ab 60 ("Befriedigend"), ab 50 ("Genügend"), sonst ("Nicht genügend").
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t3">
|
||
<label for="t3" class="task-label">
|
||
<strong>TODO 3: <code>ist_schaltjahr(jahr: int) -> bool</code></strong><br>
|
||
Prüfe die Schaltjahr-Regel: Durch 4 teilbar, aber nicht durch 100 (außer wenn durch 400 teilbar).
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t4">
|
||
<label for="t4" class="task-label">
|
||
<strong>TODO 4: <code>kann_achterbahn_fahren(groesse_cm: int, begleitung_erwachsen: bool) -> bool</code></strong><br>
|
||
Freizeitpark-Zulassung: Ab 140 cm immer erlaubt (True). Zwischen 120 und 139 cm nur mit erwachsener Begleitung (True). Unter 120 cm nie erlaubt (False).
|
||
</label>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>💡 Lösungshinweise (Aufklappen bei Bedarf)</h3>
|
||
|
||
<details>
|
||
<summary>🔍 Tipp zu TODO 2 (Reihenfolge der Notenstufen)</summary>
|
||
<div class="details-content">
|
||
<p>Prüfe zuerst die ungültigen Werte (<code>punkte < 0 or punkte > 100</code>). Danach kannst du bequem von oben nach unten mit <code>>= 90</code>, <code>>= 75</code> usw. prüfen!</p>
|
||
<div class="code-container">
|
||
<pre><code>if punkte < 0 or punkte > 100:
|
||
return "Ungültige Punktezahl"
|
||
elif punkte >= 90:
|
||
return "Sehr gut"
|
||
# ...</code></pre>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details>
|
||
<summary>🔍 Tipp zu TODO 3 (Modulo % & Schaltjahre)</summary>
|
||
<div class="details-content">
|
||
<p>Mit dem Modulo-Operator <code>%</code> prüfst du die Teilbarkeit (Restwert der Division ist 0):</p>
|
||
<div class="code-container">
|
||
<pre><code>if (jahr % 4 == 0 and jahr % 100 != 0) or (jahr % 400 == 0):
|
||
return True
|
||
return False</code></pre>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
</section>
|
||
|
||
<!-- 5. Testen & Navigation -->
|
||
<section class="card">
|
||
<h2>5. 🧪 Automatische Tests & Überprüfung</h2>
|
||
<p>Führe das Testskript im Terminal aus:</p>
|
||
<div class="code-container">
|
||
<div class="code-header">
|
||
<span>Terminal</span>
|
||
</div>
|
||
<pre><code>python3 test_aufgabe.py</code></pre>
|
||
</div>
|
||
|
||
<p>Oder teste das interaktive Programm mit eigenen Eingaben:</p>
|
||
<div class="code-container">
|
||
<div class="code-header"><span>Interaktiver Test</span></div>
|
||
<pre><code>python3 aufgabe.py</code></pre>
|
||
</div>
|
||
|
||
<div class="footer-nav">
|
||
<a href="../03_ein_und_ausgabe/index.html" class="btn btn-secondary">← Zurück zu Kapitel G03</a>
|
||
<a href="../05_schleifen_und_wiederholungen/index.html" class="btn">Weiter zu Kapitel G05: Schleifen →</a>
|
||
</div>
|
||
</section>
|
||
|
||
</main>
|
||
</div>
|
||
</div>
|
||
|
||
<button type="button" class="sidebar-mobile-toggle"><span>☰ Menü</span></button>
|
||
<div class="sidebar-overlay"></div>
|
||
|
||
<!-- Scripts -->
|
||
<script src="../../assets/gamification_data.js"></script>
|
||
<script src="../../assets/gamification.js"></script>
|
||
<script src="../../assets/interpreter.js"></script>
|
||
<script src="../../assets/certificate.js"></script>
|
||
<script src="../../assets/parsons.js"></script>
|
||
<script src="../../assets/runner.js"></script>
|
||
<script src="../../assets/ui_enhancements.js"></script>
|
||
<script src="../../assets/sidebar.js"></script>
|
||
</body>
|
||
</html>
|