452 lines
26 KiB
HTML
452 lines
26 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Kapitel G10: Comprehensions, Datum & Algorithmen</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">
|
||
<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 active">
|
||
<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="../09_dictionaries_und_sets/index.html">← Kapitel G09</a>
|
||
<span>›</span>
|
||
<span style="color: white; font-weight: 600;">Kapitel G10</span>
|
||
<span>›</span>
|
||
<a href="../../lehrpfad_2_oop_einstieg/00_fehlersuche_und_grundlagen/index.html">Lehrpfad 2: OOP →</a>
|
||
</nav>
|
||
<div class="header-badge">Kapitel G10 • Schulabgleich 13.0 & 15.1</div>
|
||
<h1>Comprehensions, Datum & Algorithmen 🚀📅</h1>
|
||
<p>Lerne, wie du elegante Einzeiler schreibst, mit Zeitspannen rechnest und grundlegende Such- und Filter-Algorithmen 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="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. List Comprehensions: Das Schnellschienen-Fließband -->
|
||
<section class="card">
|
||
<h2>1. List Comprehensions: Das Schnellschienen-Fließband</h2>
|
||
|
||
<p>
|
||
In Python musst du nicht jedes Mal eine leere Liste erstellen und eine 4-zeilige <code>for</code>-Schleife mit <code>.append()</code> schreiben.
|
||
Mit <strong>List Comprehensions</strong> erstellst und filterst du Listen in einer einzigen, eleganten Zeile!
|
||
</p>
|
||
|
||
<div class="box box-analogie">
|
||
<div class="box-title">🏭 Die Fließband- & Filtersieb-Analogie:</div>
|
||
<p>Stell dir ein automatisiertes Fließband in einer Manufaktur vor:</p>
|
||
<ul style="margin-left: 20px; margin-top: 8px;">
|
||
<li>Die Rohstoffe (Elemente aus der Ausgangsliste) laufen über das Band (<code>for x in liste</code>).</li>
|
||
<li>Ein Sensor sortiert unpassende Teile sofort aus (<code>if x % 2 == 0</code>).</li>
|
||
<li>Am Ende wird das Teil direkt veredelt oder berechnet (<code>x ** 2</code>) und fällt fertig verpackt in die neue Liste!</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<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>Vergleich: Traditionelle Schleife vs. List Comprehension</span>
|
||
</div>
|
||
<pre><span class="cm"># 🐢 Vorher: Traditionelle for-Schleife (4 Zeilen)</span>
|
||
<span class="var">gerade_quadrate</span> = []
|
||
<span class="kw">for</span> <span class="var">x</span> <span class="kw">in</span> <span class="fn">range</span>(<span class="num">1</span>, <span class="num">7</span>):
|
||
<span class="kw">if</span> <span class="var">x</span> % <span class="num">2</span> == <span class="num">0</span>:
|
||
<span class="var">gerade_quadrate</span>.<span class="fn">append</span>(<span class="var">x</span> ** <span class="num">2</span>)
|
||
|
||
<span class="cm"># 🚀 Nachher: Elegante List Comprehension (1 Zeile!)</span>
|
||
<span class="var">gerade_quadrate</span> = [<span class="var">x</span> ** <span class="num">2</span> <span class="kw">for</span> <span class="var">x</span> <span class="kw">in</span> <span class="fn">range</span>(<span class="num">1</span>, <span class="num">7</span>) <span class="kw">if</span> <span class="var">x</span> % <span class="num">2</span> == <span class="num">0</span>]
|
||
<span class="fn">print</span>(<span class="var">gerade_quadrate</span>) <span class="cm"># [4, 16, 36]</span></pre>
|
||
</div>
|
||
|
||
<h3>Dict Comprehensions: Dictionaries on the fly</h3>
|
||
<div class="code-container">
|
||
<div class="code-header"><span>Dict Comprehension Syntax</span></div>
|
||
<pre><span class="var">woerter</span> = [<span class="str">"Python"</span>, <span class="str">"Code"</span>, <span class="str">"Entwicklung"</span>]
|
||
<span class="var">laengen</span> = {<span class="var">w</span>: <span class="fn">len</span>(<span class="var">w</span>) <span class="kw">for</span> <span class="var">w</span> <span class="kw">in</span> <span class="var">woerter</span>}
|
||
<span class="fn">print</span>(<span class="var">laengen</span>) <span class="cm"># {'Python': 6, 'Code': 4, 'Entwicklung': 11}</span></pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 2. Datum & Zeit mit datetime -->
|
||
<section class="card">
|
||
<h2>2. Datum, Uhrzeit & Zeitspannen (Das <code>datetime</code>-Modul)</h2>
|
||
|
||
<p>
|
||
Egal ob Ticket-Buchung, Geburtstags-Erinnerung oder Spielstand-Speicherung: Zeitberechnungen gehören zum Alltag jeder Programmiererin.
|
||
</p>
|
||
|
||
<div class="box box-analogie">
|
||
<div class="box-title">🗓️ Die Kalender- & Stoppuhr-Analogie:</div>
|
||
<ul style="margin-left: 20px; margin-top: 8px;">
|
||
<li><code>date</code> & <code>datetime</code> sind wie dein Kalender: Ein festes Datum wie der 24.12.2026.</li>
|
||
<li><code>timedelta</code> ist wie eine Zeitspanne (z.B. "+ 14 Tage" oder "- 3 Stunden").</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="code-container">
|
||
<div class="code-header">
|
||
<span>Python: Rechnen mit datetime & timedelta</span>
|
||
</div>
|
||
<pre><span class="kw">from</span> <span class="var">datetime</span> <span class="kw">import</span> <span class="var">datetime</span>, <span class="var">date</span>, <span class="var">timedelta</span>
|
||
|
||
<span class="cm"># 1. Heute ermitteln:</span>
|
||
<span class="var">heute</span> = <span class="var">date</span>.<span class="fn">today</span>()
|
||
|
||
<span class="cm"># 2. Text in Datum parsen (.strptime):</span>
|
||
<span class="var">urlaub</span> = <span class="var">datetime</span>.<span class="fn">strptime</span>(<span class="str">"2026-07-15"</span>, <span class="str">"%Y-%m-%d"</span>).<span class="fn">date</span>()
|
||
|
||
<span class="cm"># 3. Differenz in Tagen berechnen:</span>
|
||
<span class="var">tage_bis_urlaub</span> = (<span class="var">urlaub</span> - <span class="var">heute</span>).<span class="attr">days</span>
|
||
<span class="fn">print</span>(<span class="str">f"Noch {tage_bis_urlaub} Tage bis zum Urlaub!"</span>)
|
||
|
||
<span class="cm"># 4. Deutsches Datumsformat ausgeben (.strftime):</span>
|
||
<span class="fn">print</span>(<span class="var">urlaub</span>.<span class="fn">strftime</span>(<span class="str">"%d.%m.%Y"</span>)) <span class="cm"># Ausgabe: "15.07.2026"</span></pre>
|
||
</div>
|
||
|
||
<h3>Wichtige Formatierungs-Kürzel</h3>
|
||
<table style="width: 100%; border-collapse: collapse; margin: 15px 0;">
|
||
<thead>
|
||
<tr style="background: var(--primary-light); text-align: left;">
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Kürzel</th>
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Bedeutung</th>
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Beispiel</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>%d</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Tag im Monat mit führender Null (01..31)</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>05</code> oder <code>29</code></td>
|
||
</tr>
|
||
<tr style="background: #fafafa;">
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>%m</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Monat mit führender Null (01..12)</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>08</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>%Y</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Vierstelliges Jahr</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>2026</code></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
|
||
<!-- 3. Grundlegende Algorithmen -->
|
||
<section class="card">
|
||
<h2>3. Grundlegende Algorithmen: Min/Max, Suchen & Sortieren</h2>
|
||
|
||
<p>
|
||
Ein <strong>Algorithmus</strong> ist eine präzise Handlungsanweisung zur Lösung eines Problems.
|
||
Hier lernst du die wichtigsten Muster kennen:
|
||
</p>
|
||
|
||
<div class="code-container">
|
||
<div class="code-header">
|
||
<span>Maximum suchen mit key=</span>
|
||
</div>
|
||
<pre><span class="var">personen</span> = [
|
||
{<span class="str">"name"</span>: <span class="str">"Anna"</span>, <span class="str">"alter"</span>: <span class="num">25</span>},
|
||
{<span class="str">"name"</span>: <span class="str">"Ben"</span>, <span class="str">"alter"</span>: <span class="num">32</span>},
|
||
{<span class="str">"name"</span>: <span class="str">"Clara"</span>, <span class="str">"alter"</span>: <span class="num">19</span>}
|
||
]
|
||
|
||
<span class="cm"># Die älteste Person mit max() und Lambda-Schlüssel finden:</span>
|
||
<span class="var">aelteste</span> = <span class="fn">max</span>(<span class="var">personen</span>, <span class="var">key</span>=<span class="kw">lambda</span> <span class="var">p</span>: <span class="var">p</span>[<span class="str">"alter"</span>])
|
||
<span class="fn">print</span>(<span class="str">f"Älteste Person: {aelteste['name']} ({aelteste['alter']} Jahre)"</span>)
|
||
<span class="cm"># Ausgabe: Älteste Person: Ben (32 Jahre)</span></pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 4. Aufgaben & Checkliste -->
|
||
<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 die Datei <code><a href="aufgabe.py" style="color: inherit; text-decoration: underline;">aufgabe.py</a></code> und bearbeite die folgenden 5 Aufgaben:</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>quadratzahlen_gerade</code>):</strong> Erzeuge mit einer List Comprehension eine Liste mit den Quadraten aller geraden Zahlen.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t2">
|
||
<label for="t2" class="task-label">
|
||
<strong>TODO 2 (<code>filtriere_lange_woerter</code>):</strong> Filtere alle Wörter heraus, deren Zeichenlänge mindestens <code>min_laenge</code> beträgt.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t3">
|
||
<label for="t3" class="task-label">
|
||
<strong>TODO 3 (<code>tage_bis_datum</code>):</strong> Parse ein Datums-String (<code>YYYY-MM-DD</code>) und berechne die Differenz in Tagen zu heute.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t4">
|
||
<label for="t4" class="task-label">
|
||
<strong>TODO 4 (<code>formatiere_deutsches_datum</code>):</strong> Formatiere ein <code>date</code>- oder <code>datetime</code>-Objekt mit <code>.strftime()</code> im Format <code>DD.MM.YYYY</code>.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t5">
|
||
<label for="t5" class="task-label">
|
||
<strong>TODO 5 (<code>finde_aelteste_person</code>):</strong> Suche in einer Liste von Personen-Dictionaries die Person mit dem größten Alter und gib ihren Namen zurück (oder <code>""</code> bei leerer Liste).
|
||
</label>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>💡 Lösungshinweise (Aufklappen bei Bedarf)</h3>
|
||
|
||
<details>
|
||
<summary>🔍 Tipp zu TODO 1 & 2 (List Comprehensions)</summary>
|
||
<div class="details-content">
|
||
<div class="code-container">
|
||
<pre><span class="cm"># TODO 1:</span>
|
||
<span class="kw">return</span> [<span class="var">x</span> ** <span class="num">2</span> <span class="kw">for</span> <span class="var">x</span> <span class="kw">in</span> <span class="var">zahlen</span> <span class="kw">if</span> <span class="var">x</span> % <span class="num">2</span> == <span class="num">0</span>]
|
||
|
||
<span class="cm"># TODO 2:</span>
|
||
<span class="kw">return</span> [<span class="var">w</span> <span class="kw">for</span> <span class="var">w</span> <span class="kw">in</span> <span class="var">woerter</span> <span class="kw">if</span> <span class="fn">len</span>(<span class="var">w</span>) >= <span class="var">min_laenge</span>]</pre>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details>
|
||
<summary>🔍 Tipp zu TODO 3 (Datum einlesen & subtrahieren)</summary>
|
||
<div class="details-content">
|
||
<div class="code-container">
|
||
<pre><span class="var">ziel</span> = <span class="var">datetime</span>.<span class="fn">strptime</span>(<span class="var">ziel_datum_str</span>, <span class="str">"%Y-%m-%d"</span>).<span class="fn">date</span>()
|
||
<span class="var">heute</span> = <span class="var">date</span>.<span class="fn">today</span>()
|
||
<span class="kw">return</span> (<span class="var">ziel</span> - <span class="var">heute</span>).<span class="attr">days</span></pre>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
</section>
|
||
|
||
<!-- 5. Testen & Navigation -->
|
||
<section class="card">
|
||
<h2>5. 🧪 Lösung überprüfen & Kursabschluss</h2>
|
||
<p>Führe den Test 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>
|
||
|
||
<div class="footer-nav">
|
||
<a href="../09_dictionaries_und_sets/index.html" class="btn btn-secondary">← Zurück zu Kapitel G09</a>
|
||
<a href="../../lehrpfad_2_oop_einstieg/00_fehlersuche_und_grundlagen/index.html" class="btn">Weiter zu Lehrpfad 2: OOP & Klassen →</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>
|