305 lines
16 KiB
HTML
305 lines
16 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Grundlagen 01: Python als Taschenrechner</title>
|
||
<link rel="stylesheet" href="../assets/style.css">
|
||
</head>
|
||
<body>
|
||
|
||
<header>
|
||
<div class="header-container">
|
||
<nav class="nav-links">
|
||
<a href="../index.html">🏠 Zur Kursübersicht</a>
|
||
<span>›</span>
|
||
<span style="color: white; font-weight: 600;">Grundlagen 01</span>
|
||
<span>›</span>
|
||
<a href="../g02_variablen_und_datentypen/index.html">Grundlagen 02 →</a>
|
||
</nav>
|
||
<div class="header-badge">Grundlagen 01 • Schulabgleich 02.1</div>
|
||
<h1>Python als Taschenrechner 🧮</h1>
|
||
<p>Lerne die Grundrechenarten, besondere Operatoren wie Modulo und Ganzzahldivision sowie Punkt-vor-Strich-Regeln in Python kennen.</p>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="container">
|
||
|
||
<!-- 1. Analogie: Python als Super-Taschenrechner -->
|
||
<section class="card">
|
||
<h2>1. Die Taschenrechner-Analogie 💡</h2>
|
||
<p>
|
||
Bevor wir riesige Programme und Klassen bauen, starten wir mit der einfachsten Eigenschaft von Python: <strong>Python ist der schnellste und präziseste Taschenrechner der Welt!</strong>
|
||
</p>
|
||
|
||
<div class="box box-analogie">
|
||
<div class="box-title">🧠 Warum ist Python besser als ein gewöhnlicher Taschenrechner?</div>
|
||
Ein normaler Taschenrechner hat oft ein Limit bei 10 oder 12 Stellen. Python hingegen rechnet mit beliebig großen Zahlen (sogar Zahlen mit hunderten Ziffern!) und verarbeitet komplexe mathematische Formeln fehlerfrei nach den universellen Rechengesetzen.
|
||
</div>
|
||
|
||
<div class="code-container">
|
||
<div class="code-header">
|
||
<span>Python Interaktiv (REPL / Terminal)</span>
|
||
<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>
|
||
</div>
|
||
<pre><span class="cm"># Einfach eintippen – Python rechnet sofort:</span>
|
||
>>> <span class="num">12</span> + <span class="num">8</span>
|
||
<span class="num">20</span>
|
||
|
||
>>> <span class="num">100</span> * <span class="num">5</span>
|
||
<span class="num">500</span>
|
||
|
||
>>> <span class="num">2</span> ** <span class="num">10</span> <span class="cm"># 2 hoch 10</span>
|
||
<span class="num">1024</span></pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 2. Zahlenarten: int vs. float -->
|
||
<section class="card">
|
||
<h2>2. Ganze Zahlen (<code>int</code>) vs. Kommazahlen (<code>float</code>)</h2>
|
||
<p>
|
||
In Python gibt es zwei fundamentale Typen von Zahlen:
|
||
</p>
|
||
|
||
<div class="box box-tipp">
|
||
<div class="box-title">🔢 Die zwei Zahlenwelten:</div>
|
||
<ul style="margin-left: 20px; margin-top: 6px;">
|
||
<li><strong><code>int</code> (Integer):</strong> Ganze Zahlen ohne Nachkommastellen (z.B. <code>42</code>, <code>-7</code>, <code>0</code>, <code>1000000</code>).</li>
|
||
<li><strong><code>float</code> (Floating Point):</strong> Kommazahlen mit Nachkommastellen (z.B. <code>3.14</code>, <code>-0.5</code>, <code>2.0</code>).</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="box box-warning">
|
||
<div class="box-title">⚠️ Wichtig: Punkt statt Komma!</div>
|
||
Im Deutschen schreiben wir <code>3,14</code> mit Komma. Im Programmieren gilt immer der <strong>angelsächsische Punkt</strong>: <code>3.14</code>. Ein Komma in Python trennt Parameter oder Listenelemente!
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 3. Die 7 Rechenoperatoren -->
|
||
<section class="card">
|
||
<h2>3. Die 7 Rechenoperatoren im Überblick</h2>
|
||
<p>
|
||
Hier sind alle wichtigen mathematischen Operatoren, die du in Python beherrschen musst:
|
||
</p>
|
||
|
||
<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);">Operator</th>
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Name</th>
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Beispiel</th>
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Ergebnis</th>
|
||
<th style="padding: 10px; border: 1px solid var(--border-color);">Erklärung & Besonderheit</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">+</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Addition</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>12 + 8</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold;"><code>20</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Addiert zwei Werte</td>
|
||
</tr>
|
||
<tr style="background: #fafafa;">
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">-</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Subtraktion</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>20 - 7</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold;"><code>13</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Zieht den zweiten Wert ab</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">*</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Multiplikation</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>6 * 7</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold;"><code>42</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Multipliziert zwei Werte</td>
|
||
</tr>
|
||
<tr style="background: #fafafa;">
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">/</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Echte Division</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>7 / 2</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; color: #d97706;"><code>3.5</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><strong>Wichtig:</strong> Liefert in Python 3 <em>immer</em> ein <code>float</code> (Kommazahl)! Sogar <code>4 / 2</code> liefert <code>2.0</code>.</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">//</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Ganzzahldivision</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>17 // 5</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; color: var(--success);"><code>3</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Rundet das Ergebnis immer zur nächsten ganzen Zahl nach unten ab (Floor Division).</td>
|
||
</tr>
|
||
<tr style="background: #fafafa;">
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">%</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Modulo (Rest)</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>17 % 5</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; color: var(--purple);"><code>2</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Gibt den <strong>Rest</strong> bei der Ganzzahldivision zurück.</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold; font-family: var(--font-mono); color: var(--primary);">**</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Potenzierung</td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);"><code>2 ** 3</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color); font-weight: bold;"><code>8</code></td>
|
||
<td style="padding: 10px; border: 1px solid var(--border-color);">Berechnet Basis hoch Exponent (2 * 2 * 2 = 8).</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h3>🍕 Die Pizza-Analogie für <code>//</code> und <code>%</code></h3>
|
||
<div class="box box-analogie">
|
||
<div class="box-title">17 Pizzastücke auf 5 Freunde aufteilen:</div>
|
||
<p>
|
||
- <code>17 // 5 = 3</code> → Jeder Freund bekommt genau <strong>3 ganze Stücke</strong>.<br>
|
||
- <code>17 % 5 = 2</code> → In der Schachtel bleiben <strong>2 Stücke übrig</strong>.<br>
|
||
- <em>Kontrollrechnung:</em> \(3 \times 5 + 2 = 17\) Stücke!
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 4. Vorrangregeln -->
|
||
<section class="card">
|
||
<h2>4. Vorrangregeln: Punkt vor Strich & Klammern 📐</h2>
|
||
<p>
|
||
Python hält sich streng an die mathematischen Rechengesetze (PEMDAS):
|
||
</p>
|
||
|
||
<ol style="margin-left: 25px; margin-bottom: 15px; line-height: 1.8;">
|
||
<li><strong>Klammern <code>(...)</code>:</strong> Höchste Priorität – wird immer zuerst ausgewertet!</li>
|
||
<li><strong>Potenzen <code>**</code>:</strong> Werden vor Punkt- und Strichrechnung ausgeführt.</li>
|
||
<li><strong>Punktrechnung <code>*</code>, <code>/</code>, <code>//</code>, <code>%</code>:</strong> Kommt vor Strichrechnung.</li>
|
||
<li><strong>Strichrechnung <code>+</code>, <code>-</code>:</strong> Wird zuletzt ausgeführt.</li>
|
||
</ol>
|
||
|
||
<div class="code-container">
|
||
<div class="code-header">
|
||
<span>Vergleich: Vorrangregeln</span>
|
||
</div>
|
||
<pre><span class="cm"># Ohne Klammer: 3 * 4 = 12, dann 2 + 12 = 14</span>
|
||
<span class="var">a</span> = <span class="num">2</span> + <span class="num">3</span> * <span class="num">4</span> <span class="cm"># 14</span>
|
||
|
||
<span class="cm"># Mit Klammer: (2 + 3) = 5, dann 5 * 4 = 20</span>
|
||
<span class="var">b</span> = (<span class="num">2</span> + <span class="num">3</span>) * <span class="num">4</span> <span class="cm"># 20</span>
|
||
|
||
<span class="cm"># Kreisflächen-Formel: pi * r²</span>
|
||
<span class="var">flaeche</span> = <span class="num">3.14159</span> * (<span class="var">radius</span> ** <span class="num">2</span>)</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 5. Textausgabe mit print() -->
|
||
<section class="card">
|
||
<h2>5. Erste Textausgaben mit <code>print()</code> 📢</h2>
|
||
<p>
|
||
Mit der eingebauten Python-Funktion <code>print()</code> gibst du Texte und Rechenergebnisse auf der Konsole aus:
|
||
</p>
|
||
|
||
<div class="code-container">
|
||
<div class="code-header"><span>Beispiele für print()</span></div>
|
||
<pre><span class="fn">print</span>(<span class="str">"Hallo Welt!"</span>)
|
||
<span class="fn">print</span>(<span class="str">"Das Ergebnis von 5 + 3 ist:"</span>, <span class="num">5</span> + <span class="num">3</span>)
|
||
|
||
<span class="cm"># Modern mit f-String:</span>
|
||
<span class="var">radius</span> = <span class="num">5</span>
|
||
<span class="var">flaeche</span> = <span class="num">3.14159</span> * (<span class="var">radius</span> ** <span class="num">2</span>)
|
||
<span class="fn">print</span>(<span class="str">f"Kreis mit Radius {radius} hat die Fläche: {flaeche}"</span>)</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 6. Aufgabenblatt -->
|
||
<section class="card">
|
||
<h2>6. 📝 Deine Aufgaben in <code>aufgabe.py</code></h2>
|
||
<p>
|
||
Öffne die Datei <code>g01_erste_schritte_taschenrechner/aufgabe.py</code> in deinem Editor und bearbeite die 7 TODOs:
|
||
</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>addieren(a, b)</code></strong> – Gib die Summe <code>a + b</code> zurück.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t2">
|
||
<label for="t2" class="task-label">
|
||
<strong>TODO 2: <code>subtrahieren(a, b)</code></strong> – Gib die Differenz <code>a - b</code> zurück.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t3">
|
||
<label for="t3" class="task-label">
|
||
<strong>TODO 3: <code>multiplizieren(a, b)</code></strong> – Gib das Produkt <code>a * b</code> zurück.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t4">
|
||
<label for="t4" class="task-label">
|
||
<strong>TODO 4: <code>dividieren(a, b)</code></strong> – Gib den Quotienten <code>a / b</code> zurück (liefert float).
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t5">
|
||
<label for="t5" class="task-label">
|
||
<strong>TODO 5: <code>ganzzahl_rest(a, b)</code></strong> – Gib ein Tupel <code>(a // b, a % b)</code> zurück.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t6">
|
||
<label for="t6" class="task-label">
|
||
<strong>TODO 6: <code>potenz(basis, exponent)</code></strong> – Gib <code>basis ** exponent</code> zurück.
|
||
</label>
|
||
</li>
|
||
<li class="task-item">
|
||
<input type="checkbox" class="task-checkbox" id="t7">
|
||
<label for="t7" class="task-label">
|
||
<strong>TODO 7: <code>kreis_flaeche(radius)</code></strong> – Berechne <code>3.14159 * (radius ** 2)</code> und gib das Ergebnis zurück.
|
||
</label>
|
||
</li>
|
||
</ul>
|
||
|
||
<h3>💡 Lösungshinweise (Aufklappen bei Bedarf)</h3>
|
||
|
||
<details>
|
||
<summary>🔍 Tipp zu TODO 5 (Tupel als Rückgabewert)</summary>
|
||
<div class="details-content">
|
||
<p>In Python kannst du zwei Werte auf einmal als Tupel zurückgeben, indem du sie mit einem Komma in runden Klammern schreibst:</p>
|
||
<div class="code-container">
|
||
<pre><span class="kw">return</span> (<span class="var">a</span> // <span class="var">b</span>, <span class="var">a</span> % <span class="var">b</span>)</pre>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details>
|
||
<summary>🔍 Tipp zu TODO 7 (Kreisfläche)</summary>
|
||
<div class="details-content">
|
||
<p>Verwende für Pi den vorgegebenen Wert <code>3.14159</code> und den Potenzoperator <code>** 2</code>:</p>
|
||
<div class="code-container">
|
||
<pre><span class="kw">return</span> <span class="num">3.14159</span> * (<span class="var">radius</span> ** <span class="num">2</span>)</pre>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
</section>
|
||
|
||
<!-- 7. Testen & Navigation -->
|
||
<section class="card">
|
||
<h2>7. 🧪 Testen im Terminal</h2>
|
||
<p>Führe das Testskript aus, um deine Funktionen automatisch zu überprüfen:</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="../index.html" class="btn btn-secondary">← Zurück zur Übersicht</a>
|
||
<a href="../g02_variablen_und_datentypen/index.html" class="btn">Weiter zu Kapitel G02: Variablen & Datentypen →</a>
|
||
</div>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
</body>
|
||
</html>
|