<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Dirks-Computerforum - Programmieren – Deine ersten Schritte und mehr]]></title>
		<link>https://www.dirks-computerforum.de/</link>
		<description><![CDATA[Dirks-Computerforum - https://www.dirks-computerforum.de]]></description>
		<pubDate>Tue, 12 May 2026 15:19:46 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Maschinencode verstehen – einfacher als gedacht?]]></title>
			<link>https://www.dirks-computerforum.de/thread-287.html</link>
			<pubDate>Wed, 22 Apr 2026 07:39:40 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-287.html</guid>
			<description><![CDATA[Hallo zusammen,<br />
<br />
Ich habe mich in letzter Zeit mal intensiver mit dem Thema Maschinencode beschäftigt – und festgestellt, dass es eigentlich viel weniger kompliziert ist, als man denkt.<br />
<br />
Viele haben ja das Gefühl, dass das nur etwas für Profis ist. Dabei reicht oft schon ein grobes Verständnis, um beim Programmieren bessere Entscheidungen zu treffen.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=138" target="_blank" title="">maschinencode-verstehen-featured.jpg</a> (Größe: 151,31 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Ich habe dazu einen Artikel geschrieben, in dem ich das Ganze möglichst einfach erkläre:<br />
<br />
? <a href="https://www.dirks-computerecke.de/maschinencode/" target="_blank" rel="noopener" class="mycode_url">https://www.dirks-computerecke.de/maschinencode/</a><br />
<br />
Mich würde interessieren:<br />
<br />
Habt ihr euch schon mal mit Maschinencode oder Assembly beschäftigt – oder eher nicht?]]></description>
			<content:encoded><![CDATA[Hallo zusammen,<br />
<br />
Ich habe mich in letzter Zeit mal intensiver mit dem Thema Maschinencode beschäftigt – und festgestellt, dass es eigentlich viel weniger kompliziert ist, als man denkt.<br />
<br />
Viele haben ja das Gefühl, dass das nur etwas für Profis ist. Dabei reicht oft schon ein grobes Verständnis, um beim Programmieren bessere Entscheidungen zu treffen.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=138" target="_blank" title="">maschinencode-verstehen-featured.jpg</a> (Größe: 151,31 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Ich habe dazu einen Artikel geschrieben, in dem ich das Ganze möglichst einfach erkläre:<br />
<br />
? <a href="https://www.dirks-computerecke.de/maschinencode/" target="_blank" rel="noopener" class="mycode_url">https://www.dirks-computerecke.de/maschinencode/</a><br />
<br />
Mich würde interessieren:<br />
<br />
Habt ihr euch schon mal mit Maschinencode oder Assembly beschäftigt – oder eher nicht?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Compiler vs. Interpreter – endlich einfach erklärt]]></title>
			<link>https://www.dirks-computerforum.de/thread-284.html</link>
			<pubDate>Tue, 21 Apr 2026 07:34:50 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-284.html</guid>
			<description><![CDATA[Hallo zusammen,<br />
<br />
Ich habe einen neuen Artikel veröffentlicht, in dem ich den Unterschied zwischen Compiler und Interpreter mal ganz bewusst einfach erkläre.<br />
<br />
Gerade für Einsteiger ist das oft ein Thema, bei dem man schnell aussteigt, weil vieles unnötig kompliziert erklärt wird.<br />
<br />
Ich habe versucht, das Ganze so aufzubereiten, dass man es wirklich direkt versteht – inklusive Beispiele aus dem Alltag.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=135" target="_blank" title="">compiler-vs-interpreter-vergleich.jpg</a> (Größe: 160,94 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Mich würde interessieren:<br />
<br />
Wie habt ihr den Unterschied damals gelernt oder verstanden?<br />
<br />
Hier geht’s zum Artikel:<br />
<br />
<a href="https://www.dirks-computerecke.de/compiler-und-interpreter/" target="_blank" rel="noopener" class="mycode_url">https://www.dirks-computerecke.de/compil...terpreter/</a>]]></description>
			<content:encoded><![CDATA[Hallo zusammen,<br />
<br />
Ich habe einen neuen Artikel veröffentlicht, in dem ich den Unterschied zwischen Compiler und Interpreter mal ganz bewusst einfach erkläre.<br />
<br />
Gerade für Einsteiger ist das oft ein Thema, bei dem man schnell aussteigt, weil vieles unnötig kompliziert erklärt wird.<br />
<br />
Ich habe versucht, das Ganze so aufzubereiten, dass man es wirklich direkt versteht – inklusive Beispiele aus dem Alltag.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=135" target="_blank" title="">compiler-vs-interpreter-vergleich.jpg</a> (Größe: 160,94 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Mich würde interessieren:<br />
<br />
Wie habt ihr den Unterschied damals gelernt oder verstanden?<br />
<br />
Hier geht’s zum Artikel:<br />
<br />
<a href="https://www.dirks-computerecke.de/compiler-und-interpreter/" target="_blank" rel="noopener" class="mycode_url">https://www.dirks-computerecke.de/compil...terpreter/</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 18): Projekt – Passwort-Manager (3/3) - Daten abrufen]]></title>
			<link>https://www.dirks-computerforum.de/thread-138.html</link>
			<pubDate>Thu, 21 Aug 2025 16:36:30 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-138.html</guid>
			<description><![CDATA[Hallo!<br />
<br />
Willkommen zum letzten Teil unseres Passwort-Manager-Projekts! In den letzten Lektionen haben wir die Struktur gebaut und die Speicherfunktion hinzugefügt. Heute vervollständigen wir unser Programm, indem wir die Logik zum Abrufen von Passwörtern implementieren.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Die <span style="font-style: italic;" class="mycode_i">passwort_abrufen</span>-Funktion</span><br />
<br />
Wir erstellen eine neue Funktion, die nach dem Namen eines Dienstes fragt und dann die dazugehörige Zeile in unserer Datei sucht. Wir werden die Konzepte des <a href="https://www.dirks-computerforum.de/thread-131.html" target="_blank" rel="noopener" class="mycode_url">Dateihandlings (Teil 11)</a> und der <a href="https://www.dirks-computerforum.de/thread-128.html" target="_blank" rel="noopener" class="mycode_url">Schleifen (Teil 8)</a> kombinieren.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def passwort_abrufen():<br />
    print("&#92;n--- Passwort abrufen ---")<br />
    dienst = input("Für welchen Dienst suchst du das Passwort? ")<br />
<br />
    # Wir öffnen die Datei im Lese-Modus ('r')<br />
    try:<br />
        with open("passwoerter.txt", "r") as datei:<br />
            for zeile in datei:<br />
                # Wir prüfen, ob der Dienst in der Zeile ist<br />
                if dienst in zeile:<br />
                    print("Gefunden:", zeile)<br />
                    return # Wir beenden die Funktion, da wir gefunden haben, was wir suchen<br />
            <br />
            print("Passwort für diesen Dienst nicht gefunden.")<br />
    except FileNotFoundError:<br />
        print("Datei 'passwoerter.txt' wurde nicht gefunden. Es wurden noch keine Passwörter gespeichert.")<br />
<br />
# Unser Hauptprogramm, nun mit dem Aufruf der neuen Funktion<br />
def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    while True:<br />
        aktion = input("&#92;nWas möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            passwort_speichern() <br />
        elif aktion == "abrufen":<br />
            passwort_abrufen() # Hier rufen wir die Funktion auf<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen, wenn das Programm startet<br />
hauptfunktion()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">So funktioniert der neue Code:</span><br />
<ul class="mycode_list"><li>Wir erstellen eine Funktion <span style="font-style: italic;" class="mycode_i">passwort_abrufen()</span>, die den Dienst abfragt.<br />
</li>
<li>Wir öffnen die Datei mit der <span style="font-style: italic;" class="mycode_i">try/except</span> Logik aus Teil 12, falls die Datei nicht existiert.<br />
</li>
<li>Eine <span style="font-style: italic;" class="mycode_i">for</span>-Schleife geht jede Zeile in der Datei durch.<br />
</li>
<li>Der <span style="font-style: italic;" class="mycode_i">if</span>-Befehl prüft, ob der Name des gesuchten Dienstes in der jeweiligen Zeile vorkommt. Wenn ja, wird die gesamte Zeile ausgegeben.<br />
</li>
<li><span style="font-style: italic;" class="mycode_i">return</span> beendet die Funktion, sobald ein Ergebnis gefunden wurde.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Das fertige Programm: Zusammenfassung</span><br />
<br />
Um sicherzustellen, dass alles reibungslos funktioniert, hier noch einmal das komplette und funktionsfähige Programm, das die Code-Blöcke aus den letzten drei Lektionen vereint. Du kannst es einfach kopieren und in eine neue Datei einfügen, um dein fertiges Projekt zu starten.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># CODE AUS TEIL 17: SPEICHERN<br />
def passwort_speichern():<br />
    print("&#92;n--- Passwort speichern ---")<br />
    dienst = input("Für welchen Dienst ist das Passwort? ")<br />
    passwort = input("Gib das Passwort ein: ")<br />
<br />
    with open("passwoerter.txt", "a") as datei:<br />
        datei.write(f"{dienst}: {passwort}&#92;n")<br />
    <br />
    print("Passwort erfolgreich gespeichert!")<br />
<br />
# CODE AUS TEIL 18: ABRUFEN<br />
def passwort_abrufen():<br />
    print("&#92;n--- Passwort abrufen ---")<br />
    dienst = input("Für welchen Dienst suchst du das Passwort? ")<br />
<br />
    try:<br />
        with open("passwoerter.txt", "r") as datei:<br />
            for zeile in datei:<br />
                if dienst in zeile:<br />
                    print("Gefunden:", zeile)<br />
                    return<br />
            <br />
            print("Passwort für diesen Dienst nicht gefunden.")<br />
    except FileNotFoundError:<br />
        print("Datei 'passwoerter.txt' wurde nicht gefunden. Es wurden noch keine Passwörter gespeichert.")<br />
<br />
# CODE AUS TEIL 16: HAUPTPROGRAMM<br />
def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    while True:<br />
        aktion = input("&#92;nWas möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            passwort_speichern()<br />
        elif aktion == "abrufen":<br />
            passwort_abrufen()<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen<br />
hauptfunktion()</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=22" target="_blank" title="">python-passwort-manager-komplett.jpg</a> (Größe: 156,22 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch! Du hast erfolgreich dein erstes größeres Projekt abgeschlossen und alle Bausteine aus dem Kurs miteinander verbunden.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo!<br />
<br />
Willkommen zum letzten Teil unseres Passwort-Manager-Projekts! In den letzten Lektionen haben wir die Struktur gebaut und die Speicherfunktion hinzugefügt. Heute vervollständigen wir unser Programm, indem wir die Logik zum Abrufen von Passwörtern implementieren.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Die <span style="font-style: italic;" class="mycode_i">passwort_abrufen</span>-Funktion</span><br />
<br />
Wir erstellen eine neue Funktion, die nach dem Namen eines Dienstes fragt und dann die dazugehörige Zeile in unserer Datei sucht. Wir werden die Konzepte des <a href="https://www.dirks-computerforum.de/thread-131.html" target="_blank" rel="noopener" class="mycode_url">Dateihandlings (Teil 11)</a> und der <a href="https://www.dirks-computerforum.de/thread-128.html" target="_blank" rel="noopener" class="mycode_url">Schleifen (Teil 8)</a> kombinieren.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def passwort_abrufen():<br />
    print("&#92;n--- Passwort abrufen ---")<br />
    dienst = input("Für welchen Dienst suchst du das Passwort? ")<br />
<br />
    # Wir öffnen die Datei im Lese-Modus ('r')<br />
    try:<br />
        with open("passwoerter.txt", "r") as datei:<br />
            for zeile in datei:<br />
                # Wir prüfen, ob der Dienst in der Zeile ist<br />
                if dienst in zeile:<br />
                    print("Gefunden:", zeile)<br />
                    return # Wir beenden die Funktion, da wir gefunden haben, was wir suchen<br />
            <br />
            print("Passwort für diesen Dienst nicht gefunden.")<br />
    except FileNotFoundError:<br />
        print("Datei 'passwoerter.txt' wurde nicht gefunden. Es wurden noch keine Passwörter gespeichert.")<br />
<br />
# Unser Hauptprogramm, nun mit dem Aufruf der neuen Funktion<br />
def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    while True:<br />
        aktion = input("&#92;nWas möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            passwort_speichern() <br />
        elif aktion == "abrufen":<br />
            passwort_abrufen() # Hier rufen wir die Funktion auf<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen, wenn das Programm startet<br />
hauptfunktion()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">So funktioniert der neue Code:</span><br />
<ul class="mycode_list"><li>Wir erstellen eine Funktion <span style="font-style: italic;" class="mycode_i">passwort_abrufen()</span>, die den Dienst abfragt.<br />
</li>
<li>Wir öffnen die Datei mit der <span style="font-style: italic;" class="mycode_i">try/except</span> Logik aus Teil 12, falls die Datei nicht existiert.<br />
</li>
<li>Eine <span style="font-style: italic;" class="mycode_i">for</span>-Schleife geht jede Zeile in der Datei durch.<br />
</li>
<li>Der <span style="font-style: italic;" class="mycode_i">if</span>-Befehl prüft, ob der Name des gesuchten Dienstes in der jeweiligen Zeile vorkommt. Wenn ja, wird die gesamte Zeile ausgegeben.<br />
</li>
<li><span style="font-style: italic;" class="mycode_i">return</span> beendet die Funktion, sobald ein Ergebnis gefunden wurde.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Das fertige Programm: Zusammenfassung</span><br />
<br />
Um sicherzustellen, dass alles reibungslos funktioniert, hier noch einmal das komplette und funktionsfähige Programm, das die Code-Blöcke aus den letzten drei Lektionen vereint. Du kannst es einfach kopieren und in eine neue Datei einfügen, um dein fertiges Projekt zu starten.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># CODE AUS TEIL 17: SPEICHERN<br />
def passwort_speichern():<br />
    print("&#92;n--- Passwort speichern ---")<br />
    dienst = input("Für welchen Dienst ist das Passwort? ")<br />
    passwort = input("Gib das Passwort ein: ")<br />
<br />
    with open("passwoerter.txt", "a") as datei:<br />
        datei.write(f"{dienst}: {passwort}&#92;n")<br />
    <br />
    print("Passwort erfolgreich gespeichert!")<br />
<br />
# CODE AUS TEIL 18: ABRUFEN<br />
def passwort_abrufen():<br />
    print("&#92;n--- Passwort abrufen ---")<br />
    dienst = input("Für welchen Dienst suchst du das Passwort? ")<br />
<br />
    try:<br />
        with open("passwoerter.txt", "r") as datei:<br />
            for zeile in datei:<br />
                if dienst in zeile:<br />
                    print("Gefunden:", zeile)<br />
                    return<br />
            <br />
            print("Passwort für diesen Dienst nicht gefunden.")<br />
    except FileNotFoundError:<br />
        print("Datei 'passwoerter.txt' wurde nicht gefunden. Es wurden noch keine Passwörter gespeichert.")<br />
<br />
# CODE AUS TEIL 16: HAUPTPROGRAMM<br />
def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    while True:<br />
        aktion = input("&#92;nWas möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            passwort_speichern()<br />
        elif aktion == "abrufen":<br />
            passwort_abrufen()<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen<br />
hauptfunktion()</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=22" target="_blank" title="">python-passwort-manager-komplett.jpg</a> (Größe: 156,22 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch! Du hast erfolgreich dein erstes größeres Projekt abgeschlossen und alle Bausteine aus dem Kurs miteinander verbunden.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 17): Projekt – Passwort-Manager (2/3) – Speichern von Daten]]></title>
			<link>https://www.dirks-computerforum.de/thread-137.html</link>
			<pubDate>Thu, 21 Aug 2025 13:48:04 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-137.html</guid>
			<description><![CDATA[Hallo!<br />
<br />
In der letzten Lektion haben wir die Grundstruktur unseres Passwort-Managers erstellt. Heute füllen wir die Funktion zum Speichern von Passwörtern mit Leben. Wir nutzen dafür die Lektionen über <a href="https://www.dirks-computerforum.de/thread-127.html" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Nutzereingaben</span> (Teil 7)</a> und das <a href="https://www.dirks-computerforum.de/thread-131.html" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Arbeiten mit Dateien</span> (Teil 11)</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Die <span style="font-style: italic;" class="mycode_i">speichern-</span>Funktion</span><br />
<br />
Wir erstellen eine neue Funktion, die alle nötigen Schritte zum Speichern eines Passworts übernimmt. Diese Funktion wird vom Hauptprogramm aufgerufen, wenn der Nutzer <span style="font-style: italic;" class="mycode_i">speichern</span> eingibt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def passwort_speichern():<br />
    print("&#92;n--- Passwort speichern ---")<br />
    dienst = input("Für welchen Dienst ist das Passwort? ")<br />
    passwort = input("Gib das Passwort ein: ")<br />
<br />
    # Wir speichern die Daten in einer Datei<br />
    # Der Modus 'a' (append) fügt neue Zeilen hinzu, statt die Datei zu leeren.<br />
    with open("passwoerter.txt", "a") as datei:<br />
        datei.write(f"{dienst}: {passwort}&#92;n")<br />
    <br />
    print("Passwort erfolgreich gespeichert!")<br />
<br />
# Der Code, den wir in Lektion 16 hatten<br />
def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    while True:<br />
        aktion = input("&#92;nWas möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            passwort_speichern() # Jetzt rufen wir die Funktion auf<br />
        elif aktion == "abrufen":<br />
            print("Passwort abrufen...")<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen, wenn das Programm startet<br />
hauptfunktion()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">So funktioniert der neue Code:</span><br />
<ul class="mycode_list"><li>Wir erstellen eine Funktion <span style="font-style: italic;" class="mycode_i">passwort_speichern()</span>, die nach dem Dienst und dem Passwort fragt.<br />
</li>
<li>Die <span style="font-style: italic;" class="mycode_i">open()</span>-Funktion öffnet unsere Datei im <span style="font-weight: bold;" class="mycode_b">Anfügen-Modus ('a')</span>. Das bedeutet, jeder neue Eintrag wird am Ende der Datei angefügt, ohne die alten zu löschen.<br />
</li>
<li>Mit einem <span style="font-weight: bold;" class="mycode_b">f-String</span> (<span style="font-style: italic;" class="mycode_i">f"..."</span>) verknüpfen wir den Dienst und das Passwort zu einer sauberen Zeile und schreiben sie in die Datei. Das <span style="font-style: italic;" class="mycode_i">\n</span> sorgt für einen Zeilenumbruch.<br />
</li>
<li>Im Hauptprogramm rufen wir diese Funktion einfach im <span style="font-style: italic;" class="mycode_i">speichern</span>-Abschnitt auf.<br />
</li>
</ul>
<br />
In der nächsten Lektion werden wir das Gegenteil tun: Wir fügen die Logik hinzu, um die Passwörter aus der Datei wieder abzurufen.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo!<br />
<br />
In der letzten Lektion haben wir die Grundstruktur unseres Passwort-Managers erstellt. Heute füllen wir die Funktion zum Speichern von Passwörtern mit Leben. Wir nutzen dafür die Lektionen über <a href="https://www.dirks-computerforum.de/thread-127.html" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Nutzereingaben</span> (Teil 7)</a> und das <a href="https://www.dirks-computerforum.de/thread-131.html" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Arbeiten mit Dateien</span> (Teil 11)</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Die <span style="font-style: italic;" class="mycode_i">speichern-</span>Funktion</span><br />
<br />
Wir erstellen eine neue Funktion, die alle nötigen Schritte zum Speichern eines Passworts übernimmt. Diese Funktion wird vom Hauptprogramm aufgerufen, wenn der Nutzer <span style="font-style: italic;" class="mycode_i">speichern</span> eingibt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def passwort_speichern():<br />
    print("&#92;n--- Passwort speichern ---")<br />
    dienst = input("Für welchen Dienst ist das Passwort? ")<br />
    passwort = input("Gib das Passwort ein: ")<br />
<br />
    # Wir speichern die Daten in einer Datei<br />
    # Der Modus 'a' (append) fügt neue Zeilen hinzu, statt die Datei zu leeren.<br />
    with open("passwoerter.txt", "a") as datei:<br />
        datei.write(f"{dienst}: {passwort}&#92;n")<br />
    <br />
    print("Passwort erfolgreich gespeichert!")<br />
<br />
# Der Code, den wir in Lektion 16 hatten<br />
def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    while True:<br />
        aktion = input("&#92;nWas möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            passwort_speichern() # Jetzt rufen wir die Funktion auf<br />
        elif aktion == "abrufen":<br />
            print("Passwort abrufen...")<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen, wenn das Programm startet<br />
hauptfunktion()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">So funktioniert der neue Code:</span><br />
<ul class="mycode_list"><li>Wir erstellen eine Funktion <span style="font-style: italic;" class="mycode_i">passwort_speichern()</span>, die nach dem Dienst und dem Passwort fragt.<br />
</li>
<li>Die <span style="font-style: italic;" class="mycode_i">open()</span>-Funktion öffnet unsere Datei im <span style="font-weight: bold;" class="mycode_b">Anfügen-Modus ('a')</span>. Das bedeutet, jeder neue Eintrag wird am Ende der Datei angefügt, ohne die alten zu löschen.<br />
</li>
<li>Mit einem <span style="font-weight: bold;" class="mycode_b">f-String</span> (<span style="font-style: italic;" class="mycode_i">f"..."</span>) verknüpfen wir den Dienst und das Passwort zu einer sauberen Zeile und schreiben sie in die Datei. Das <span style="font-style: italic;" class="mycode_i">\n</span> sorgt für einen Zeilenumbruch.<br />
</li>
<li>Im Hauptprogramm rufen wir diese Funktion einfach im <span style="font-style: italic;" class="mycode_i">speichern</span>-Abschnitt auf.<br />
</li>
</ul>
<br />
In der nächsten Lektion werden wir das Gegenteil tun: Wir fügen die Logik hinzu, um die Passwörter aus der Datei wieder abzurufen.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 16): Projekt – Passwort-Manager (1/3)]]></title>
			<link>https://www.dirks-computerforum.de/thread-136.html</link>
			<pubDate>Thu, 21 Aug 2025 13:39:58 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-136.html</guid>
			<description><![CDATA[Hallo und willkommen zum ersten Teil unseres großen Projekts!<br />
<br />
In den letzten Lektionen haben wir alle Bausteine für ein richtiges Programm kennengelernt. Jetzt ist es an der Zeit, diese Bausteine zu einem nützlichen Tool zusammenzusetzen: einem einfachen Passwort-Manager für die Kommandozeile.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Die Idee</span><br />
<br />
Unser Programm soll zwei Dinge können:<br />
<ul class="mycode_list"><li>Passwörter mit einem Benutzernamen in einer Textdatei speichern.<br />
</li>
<li>Gespeicherte Passwörter abrufen.<br />
</li>
</ul>
<br />
Dies wird ein interaktives Programm sein, das so lange läuft, bis der Nutzer es beendet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Die Grundstruktur</span><br />
<br />
Jedes interaktive Programm braucht eine Hauptschleife, die auf Benutzereingaben wartet. Dafür verwenden wir eine <span style="font-style: italic;" class="mycode_i">while-</span>Schleife, die so lange läuft, bis der Nutzer "beenden" wählt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    <br />
    while True:<br />
        aktion = input("Was möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            print("Passwort speichern...")<br />
        elif aktion == "abrufen":<br />
            print("Passwort abrufen...")<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen, wenn das Programm startet<br />
hauptfunktion()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Wie der Code funktioniert:</span><br />
<ul class="mycode_list"><li>while True: erstellt eine Endlosschleife.<br />
</li>
<li>input() fragt den Nutzer nach einer Aktion.<br />
</li>
<li>if/elif/else überprüft, welche Aktion der Nutzer gewählt hat und führt den entsprechenden Code aus.<br />
</li>
<li>Der break-Befehl stoppt die while-Schleife, wenn der Nutzer beenden wählt.<br />
</li>
</ul>
<br />
Das ist die grundlegende Struktur unseres Programms. In der nächsten Lektion füllen wir die speichern-Funktion mit Leben.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zum ersten Teil unseres großen Projekts!<br />
<br />
In den letzten Lektionen haben wir alle Bausteine für ein richtiges Programm kennengelernt. Jetzt ist es an der Zeit, diese Bausteine zu einem nützlichen Tool zusammenzusetzen: einem einfachen Passwort-Manager für die Kommandozeile.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Die Idee</span><br />
<br />
Unser Programm soll zwei Dinge können:<br />
<ul class="mycode_list"><li>Passwörter mit einem Benutzernamen in einer Textdatei speichern.<br />
</li>
<li>Gespeicherte Passwörter abrufen.<br />
</li>
</ul>
<br />
Dies wird ein interaktives Programm sein, das so lange läuft, bis der Nutzer es beendet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Die Grundstruktur</span><br />
<br />
Jedes interaktive Programm braucht eine Hauptschleife, die auf Benutzereingaben wartet. Dafür verwenden wir eine <span style="font-style: italic;" class="mycode_i">while-</span>Schleife, die so lange läuft, bis der Nutzer "beenden" wählt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def hauptfunktion():<br />
    print("Willkommen beim Passwort-Manager!")<br />
    <br />
    while True:<br />
        aktion = input("Was möchtest du tun? (speichern / abrufen / beenden) ")<br />
        <br />
        if aktion == "speichern":<br />
            print("Passwort speichern...")<br />
        elif aktion == "abrufen":<br />
            print("Passwort abrufen...")<br />
        elif aktion == "beenden":<br />
            print("Manager wird beendet.")<br />
            break<br />
        else:<br />
            print("Ungültige Eingabe. Bitte wähle eine der Optionen.")<br />
<br />
# Die Hauptfunktion ausführen, wenn das Programm startet<br />
hauptfunktion()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Wie der Code funktioniert:</span><br />
<ul class="mycode_list"><li>while True: erstellt eine Endlosschleife.<br />
</li>
<li>input() fragt den Nutzer nach einer Aktion.<br />
</li>
<li>if/elif/else überprüft, welche Aktion der Nutzer gewählt hat und führt den entsprechenden Code aus.<br />
</li>
<li>Der break-Befehl stoppt die while-Schleife, wenn der Nutzer beenden wählt.<br />
</li>
</ul>
<br />
Das ist die grundlegende Struktur unseres Programms. In der nächsten Lektion füllen wir die speichern-Funktion mit Leben.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 15): Polymorphie – gleiche Methode, verschiedene Objekte]]></title>
			<link>https://www.dirks-computerforum.de/thread-135.html</link>
			<pubDate>Thu, 21 Aug 2025 11:31:05 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-135.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast bereits gelernt, wie man Baupläne für Objekte erstellt (<span style="font-style: italic;" class="mycode_i">Klassen</span>) und wie man diese Baupläne wiederverwendet (<span style="font-style: italic;" class="mycode_i">Vererbung</span>). Heute geht es um die <span style="font-weight: bold;" class="mycode_b">Polymorphie</span>, was "viele Gestalten" bedeutet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Was ist Polymorphie?</span><br />
<br />
Polymorphie erlaubt es, dass eine Methode in verschiedenen Klassen dasselbe tut, aber auf ihre eigene, spezifische Art.<br />
<br />
Stell dir den Befehl "<span style="font-weight: bold;" class="mycode_b">Sprich!</span>" vor.<br />
<ul class="mycode_list"><li>Wenn du ihn einem <span style="font-weight: bold;" class="mycode_b">Menschen</span> gibst, wird er sprechen.<br />
</li>
<li>Wenn du ihn einem <span style="font-weight: bold;" class="mycode_b">Hund</span> gibst, wird er bellen.<br />
</li>
<li>Wenn du ihn einem <span style="font-weight: bold;" class="mycode_b">Papagei</span> gibst, wird er vielleicht nachplappern.<br />
</li>
</ul>
<br />
Der Befehl (<span style="font-style: italic;" class="mycode_i">Sprich!</span>) ist immer derselbe, aber er hat <span style="font-weight: bold;" class="mycode_b">viele verschiedene Gestalten</span>, je nachdem, welchem Objekt du ihn gibst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Polymorphie in Aktion</span><br />
<br />
Wir nutzen die Klassen <span style="font-style: italic;" class="mycode_i">Person</span> und <span style="font-style: italic;" class="mycode_i">Schueler</span> aus der letzten Lektion. Wir fügen eine Methode <span style="font-style: italic;" class="mycode_i">vorstellen()</span> hinzu, die sich in jeder Klasse anders verhält.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter<br />
<br />
    def vorstellen(self):<br />
        print(f"Hallo, mein Name ist {self.name} und ich bin {self.alter} Jahre alt.")<br />
<br />
class Schueler(Person):<br />
    def __init__(self, name, alter, schulklasse):<br />
        super().__init__(name, alter)<br />
        self.schulklasse = schulklasse<br />
<br />
    # Wir überschreiben die Methode vorstellen() der Elternklasse!<br />
<br />
    def vorstellen(self):<br />
        print(f"Hallo! Ich bin der Schüler {self.name} und gehe in die Klasse {self.schulklasse}.")<br />
<br />
# Wir erstellen Objekte beider Klassen<br />
<br />
person1 = Person("Dirk", 53)<br />
schueler1 = Schueler("Max", 16, "10b")<br />
<br />
# Rufe die gleiche Methode auf, die sich aber anders verhält<br />
<br />
person1.vorstellen()<br />
schueler1.vorstellen()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Die Ausgabe wäre:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Hallo, mein Name ist Dirk und ich bin 53 Jahre alt.<br />
Hallo! Ich bin der Schüler Max und gehe in die Klasse 10b.</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=21" target="_blank" title="">python-polymophie.jpg</a> (Größe: 134,45 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Du siehst, wie die gleiche Methode (<span style="font-style: italic;" class="mycode_i">vorstellen()</span>) in beiden Klassen unterschiedliche Ausgaben erzeugt. Das ist Polymorphie!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Ein weiterer wichtiger Begriff: Kapselung (Encapsulation)</span><br />
<br />
Kapselung ist die dritte Säule der OOP. Es bedeutet, dass die Daten (Attribute) eines Objekts "privat" bleiben und nur durch seine eigenen Methoden verändert werden können. So schützt du die Daten vor versehentlichen Änderungen. In Python wird dies oft durch ein führendes Unterstrichzeichen (<span style="font-style: italic;" class="mycode_i">_</span>) im Namen des Attributs signalisiert.<br />
<br />
Herzlichen Glückwunsch! Du hast die wichtigsten Grundprinzipien der objektorientierten Programmierung gemeistert.<br />
<br />
In der nächsten Lektion werden wir alle Konzepte in einem kleinen, praktischen Projekt anwenden.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast bereits gelernt, wie man Baupläne für Objekte erstellt (<span style="font-style: italic;" class="mycode_i">Klassen</span>) und wie man diese Baupläne wiederverwendet (<span style="font-style: italic;" class="mycode_i">Vererbung</span>). Heute geht es um die <span style="font-weight: bold;" class="mycode_b">Polymorphie</span>, was "viele Gestalten" bedeutet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Was ist Polymorphie?</span><br />
<br />
Polymorphie erlaubt es, dass eine Methode in verschiedenen Klassen dasselbe tut, aber auf ihre eigene, spezifische Art.<br />
<br />
Stell dir den Befehl "<span style="font-weight: bold;" class="mycode_b">Sprich!</span>" vor.<br />
<ul class="mycode_list"><li>Wenn du ihn einem <span style="font-weight: bold;" class="mycode_b">Menschen</span> gibst, wird er sprechen.<br />
</li>
<li>Wenn du ihn einem <span style="font-weight: bold;" class="mycode_b">Hund</span> gibst, wird er bellen.<br />
</li>
<li>Wenn du ihn einem <span style="font-weight: bold;" class="mycode_b">Papagei</span> gibst, wird er vielleicht nachplappern.<br />
</li>
</ul>
<br />
Der Befehl (<span style="font-style: italic;" class="mycode_i">Sprich!</span>) ist immer derselbe, aber er hat <span style="font-weight: bold;" class="mycode_b">viele verschiedene Gestalten</span>, je nachdem, welchem Objekt du ihn gibst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Polymorphie in Aktion</span><br />
<br />
Wir nutzen die Klassen <span style="font-style: italic;" class="mycode_i">Person</span> und <span style="font-style: italic;" class="mycode_i">Schueler</span> aus der letzten Lektion. Wir fügen eine Methode <span style="font-style: italic;" class="mycode_i">vorstellen()</span> hinzu, die sich in jeder Klasse anders verhält.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter<br />
<br />
    def vorstellen(self):<br />
        print(f"Hallo, mein Name ist {self.name} und ich bin {self.alter} Jahre alt.")<br />
<br />
class Schueler(Person):<br />
    def __init__(self, name, alter, schulklasse):<br />
        super().__init__(name, alter)<br />
        self.schulklasse = schulklasse<br />
<br />
    # Wir überschreiben die Methode vorstellen() der Elternklasse!<br />
<br />
    def vorstellen(self):<br />
        print(f"Hallo! Ich bin der Schüler {self.name} und gehe in die Klasse {self.schulklasse}.")<br />
<br />
# Wir erstellen Objekte beider Klassen<br />
<br />
person1 = Person("Dirk", 53)<br />
schueler1 = Schueler("Max", 16, "10b")<br />
<br />
# Rufe die gleiche Methode auf, die sich aber anders verhält<br />
<br />
person1.vorstellen()<br />
schueler1.vorstellen()</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Die Ausgabe wäre:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Hallo, mein Name ist Dirk und ich bin 53 Jahre alt.<br />
Hallo! Ich bin der Schüler Max und gehe in die Klasse 10b.</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=21" target="_blank" title="">python-polymophie.jpg</a> (Größe: 134,45 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Du siehst, wie die gleiche Methode (<span style="font-style: italic;" class="mycode_i">vorstellen()</span>) in beiden Klassen unterschiedliche Ausgaben erzeugt. Das ist Polymorphie!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Ein weiterer wichtiger Begriff: Kapselung (Encapsulation)</span><br />
<br />
Kapselung ist die dritte Säule der OOP. Es bedeutet, dass die Daten (Attribute) eines Objekts "privat" bleiben und nur durch seine eigenen Methoden verändert werden können. So schützt du die Daten vor versehentlichen Änderungen. In Python wird dies oft durch ein führendes Unterstrichzeichen (<span style="font-style: italic;" class="mycode_i">_</span>) im Namen des Attributs signalisiert.<br />
<br />
Herzlichen Glückwunsch! Du hast die wichtigsten Grundprinzipien der objektorientierten Programmierung gemeistert.<br />
<br />
In der nächsten Lektion werden wir alle Konzepte in einem kleinen, praktischen Projekt anwenden.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 14): Vererbung – Code wiederverwenden mit Klassen]]></title>
			<link>https://www.dirks-computerforum.de/thread-134.html</link>
			<pubDate>Thu, 21 Aug 2025 11:11:02 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-134.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
In der letzten Lektion hast du gelernt, wie man Baupläne (<span style="font-style: italic;" class="mycode_i">Klassen</span>) für Objekte erstellt. Aber was, wenn du einen Bauplan für eine <span style="font-style: italic;" class="mycode_i">Person</span> hast und jetzt einen für einen <span style="font-style: italic;" class="mycode_i">Schüler</span> erstellen möchtest? Ein <span style="font-style: italic;" class="mycode_i">Schüler</span> ist auch eine <span style="font-style: italic;" class="mycode_i">Person</span> und hat die gleichen Eigenschaften wie Name und Alter.<br />
<br />
Hier kommt die <span style="font-weight: bold;" class="mycode_b">Vererbung</span> ins Spiel. Sie erlaubt es einer neuen Klasse, alle Eigenschaften und Methoden von einer bestehenden Klasse zu "erben". Das spart eine Menge Arbeit und macht deinen Code sehr viel sauberer.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Klasse erben lassen</span><br />
<br />
Um eine Klasse von einer anderen erben zu lassen, schreibst du den Namen der "Eltern-Klasse" einfach in Klammern hinter den Namen der neuen Klasse.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter<br />
<br />
    def sage_hallo(self):<br />
        print(f"Hallo, mein Name ist {self.name}.")<br />
<br />
# Die Klasse Schüler erbt von der Klasse Person<br />
class Schueler(Person):<br />
    pass  # 'pass' ist ein Platzhalter</code></div></div><br />
<br />
Der neue <span style="font-style: italic;" class="mycode_i">Schüler</span> hat jetzt automatisch die Eigenschaften <span style="font-style: italic;" class="mycode_i">name</span> und <span style="font-style: italic;" class="mycode_i">alter</span> sowie die Methode <span style="font-style: italic;" class="mycode_i">sage_hallo()</span>. Das musstest du nicht noch einmal schreiben!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Eigene Eigenschaften hinzufügen</span><br />
<br />
Ein <span style="font-style: italic;" class="mycode_i">Schüler</span> hat aber auch eigene Eigenschaften. Um diese hinzuzufügen, nutzt du eine spezielle Funktion namens <span style="font-style: italic;" class="mycode_i">super()</span>, um die Eigenschaften der Eltern-Klasse aufzurufen, und fügst dann deine eigenen hinzu.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Schueler(Person):<br />
    def __init__(self, name, alter, schulklasse):<br />
        super().__init__(name, alter)<br />
        self.schulklasse = schulklasse<br />
<br />
    def sag_schulklasse(self):<br />
        print(f"Ich bin in der Klasse {self.schulklasse}.")</code></div></div><br />
<ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">super().__init__(name, alter)</span> ruft den Konstruktor der <span style="font-style: italic;" class="mycode_i">Person</span>-Klasse auf und übergibt die Werte.<br />
</li>
<li><span style="font-style: italic;" class="mycode_i">self.schulklasse = schulklasse</span> fügt die neue Eigenschaft hinzu.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">3. Ein praktisches Beispiel</span><br />
<br />
Jetzt kannst du Objekte beider Klassen erstellen und sie nutzen.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>person1 = Person("Dirk", 53)<br />
schueler1 = Schueler("Max", 16, "10b")<br />
<br />
person1.sage_hallo()    # Ausgabe: Hallo, mein Name ist Dirk.<br />
schueler1.sage_hallo()    # Ausgabe: Hallo, mein Name ist Max.<br />
schueler1.sag_schulklasse() # Ausgabe: Ich bin in der Klasse 10b.</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=20" target="_blank" title="">python-vererbung.jpg</a> (Größe: 134,28 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Wie du siehst, kann das <span style="font-style: italic;" class="mycode_i">Schueler</span>-Objekt die geerbten und die eigenen Methoden nutzen.<br />
<br />
In der nächsten Lektion werden wir uns mit dem nächsten wichtigen Prinzip der OOP beschäftigen: der Polymorphie.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
In der letzten Lektion hast du gelernt, wie man Baupläne (<span style="font-style: italic;" class="mycode_i">Klassen</span>) für Objekte erstellt. Aber was, wenn du einen Bauplan für eine <span style="font-style: italic;" class="mycode_i">Person</span> hast und jetzt einen für einen <span style="font-style: italic;" class="mycode_i">Schüler</span> erstellen möchtest? Ein <span style="font-style: italic;" class="mycode_i">Schüler</span> ist auch eine <span style="font-style: italic;" class="mycode_i">Person</span> und hat die gleichen Eigenschaften wie Name und Alter.<br />
<br />
Hier kommt die <span style="font-weight: bold;" class="mycode_b">Vererbung</span> ins Spiel. Sie erlaubt es einer neuen Klasse, alle Eigenschaften und Methoden von einer bestehenden Klasse zu "erben". Das spart eine Menge Arbeit und macht deinen Code sehr viel sauberer.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Klasse erben lassen</span><br />
<br />
Um eine Klasse von einer anderen erben zu lassen, schreibst du den Namen der "Eltern-Klasse" einfach in Klammern hinter den Namen der neuen Klasse.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter<br />
<br />
    def sage_hallo(self):<br />
        print(f"Hallo, mein Name ist {self.name}.")<br />
<br />
# Die Klasse Schüler erbt von der Klasse Person<br />
class Schueler(Person):<br />
    pass  # 'pass' ist ein Platzhalter</code></div></div><br />
<br />
Der neue <span style="font-style: italic;" class="mycode_i">Schüler</span> hat jetzt automatisch die Eigenschaften <span style="font-style: italic;" class="mycode_i">name</span> und <span style="font-style: italic;" class="mycode_i">alter</span> sowie die Methode <span style="font-style: italic;" class="mycode_i">sage_hallo()</span>. Das musstest du nicht noch einmal schreiben!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Eigene Eigenschaften hinzufügen</span><br />
<br />
Ein <span style="font-style: italic;" class="mycode_i">Schüler</span> hat aber auch eigene Eigenschaften. Um diese hinzuzufügen, nutzt du eine spezielle Funktion namens <span style="font-style: italic;" class="mycode_i">super()</span>, um die Eigenschaften der Eltern-Klasse aufzurufen, und fügst dann deine eigenen hinzu.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Schueler(Person):<br />
    def __init__(self, name, alter, schulklasse):<br />
        super().__init__(name, alter)<br />
        self.schulklasse = schulklasse<br />
<br />
    def sag_schulklasse(self):<br />
        print(f"Ich bin in der Klasse {self.schulklasse}.")</code></div></div><br />
<ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">super().__init__(name, alter)</span> ruft den Konstruktor der <span style="font-style: italic;" class="mycode_i">Person</span>-Klasse auf und übergibt die Werte.<br />
</li>
<li><span style="font-style: italic;" class="mycode_i">self.schulklasse = schulklasse</span> fügt die neue Eigenschaft hinzu.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">3. Ein praktisches Beispiel</span><br />
<br />
Jetzt kannst du Objekte beider Klassen erstellen und sie nutzen.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>person1 = Person("Dirk", 53)<br />
schueler1 = Schueler("Max", 16, "10b")<br />
<br />
person1.sage_hallo()    # Ausgabe: Hallo, mein Name ist Dirk.<br />
schueler1.sage_hallo()    # Ausgabe: Hallo, mein Name ist Max.<br />
schueler1.sag_schulklasse() # Ausgabe: Ich bin in der Klasse 10b.</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=20" target="_blank" title="">python-vererbung.jpg</a> (Größe: 134,28 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Wie du siehst, kann das <span style="font-style: italic;" class="mycode_i">Schueler</span>-Objekt die geerbten und die eigenen Methoden nutzen.<br />
<br />
In der nächsten Lektion werden wir uns mit dem nächsten wichtigen Prinzip der OOP beschäftigen: der Polymorphie.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 13): Objektorientierte Programmierung (OOP)]]></title>
			<link>https://www.dirks-computerforum.de/thread-133.html</link>
			<pubDate>Thu, 21 Aug 2025 10:37:30 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-133.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast jetzt alle Grundlagen, um nützliche Skripte zu schreiben. Aber wie organisieren professionelle Entwickler ihren Code, wenn er sehr groß wird? Die Antwort ist die <span style="font-weight: bold;" class="mycode_b">Objektorientierte Programmierung (OOP)</span>.<br />
<br />
Stell dir eine <span style="font-weight: bold;" class="mycode_b">Klasse</span> wie einen Bauplan für ein Haus vor. Der Plan beschreibt, wie das Haus aussehen soll (Anzahl der Zimmer, Farbe der Wände). Ein <span style="font-weight: bold;" class="mycode_b">Objekt</span> ist dann das fertige Haus, das nach diesem Plan gebaut wird. Du kannst aus einem Plan beliebig viele Häuser bauen – jedes einzigartig, aber mit den gleichen Eigenschaften.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Klasse definieren</span><br />
<br />
Eine Klasse wird mit dem Schlüsselwort class erstellt. Wir definieren Eigenschaften (Attribute) und Verhaltensweisen (Methoden) für unsere Objekte.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    # Der Bauplan für eine Person<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter</code></div></div><br />
<br />
Die spezielle Funktion __init__ (genannt "Konstruktor") wird immer aufgerufen, wenn du ein neues Objekt erstellst. self bezieht sich auf das Objekt selbst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Ein Objekt erstellen</span><br />
<br />
Um aus deiner Klasse ein Objekt zu erstellen, rufst du den Klassennamen mit den benötigten Werten auf.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>person1 = Person("Dirk", 53)<br />
person2 = Person("Anna", 30)</code></div></div><br />
<br />
Jetzt hast du zwei einzigartige Objekte: person1 und person2, die jeweils nach dem "Bauplan" der Klasse Person erstellt wurden.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Mit Objekten arbeiten</span><br />
<br />
Du kannst auf die Eigenschaften und Methoden eines Objekts mit einem Punkt zugreifen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>print(person1.name)  # Ausgabe: Dirk<br />
print(person2.alter) # Ausgabe: 30</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=18" target="_blank" title="">python-objektorientierte-programmierung-01.jpg</a> (Größe: 85,69 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --> <br />
<br />
Um eine Funktion in der Klasse zu nutzen, fügst du diese einfach hinzu und rufst sie dann über das Objekt auf:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter<br />
<br />
    def sage_hallo(self):<br />
        print(f"Hallo, mein Name ist {self.name}.")<br />
<br />
person1 = Person("Dirk", 42)<br />
person1.sage_hallo() # Ausgabe: Hallo, mein Name ist Dirk.</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=19" target="_blank" title="">python-objektorientierte-programmierung-02.jpg</a> (Größe: 86,45 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch! Du hast die Grundlagen der objektorientierten Programmierung verstanden. Das ist ein großer Meilenstein!<br />
<br />
In der nächsten Lektion werden wir tiefer in die OOP eintauchen und uns mit Vererbung beschäftigen.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast jetzt alle Grundlagen, um nützliche Skripte zu schreiben. Aber wie organisieren professionelle Entwickler ihren Code, wenn er sehr groß wird? Die Antwort ist die <span style="font-weight: bold;" class="mycode_b">Objektorientierte Programmierung (OOP)</span>.<br />
<br />
Stell dir eine <span style="font-weight: bold;" class="mycode_b">Klasse</span> wie einen Bauplan für ein Haus vor. Der Plan beschreibt, wie das Haus aussehen soll (Anzahl der Zimmer, Farbe der Wände). Ein <span style="font-weight: bold;" class="mycode_b">Objekt</span> ist dann das fertige Haus, das nach diesem Plan gebaut wird. Du kannst aus einem Plan beliebig viele Häuser bauen – jedes einzigartig, aber mit den gleichen Eigenschaften.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Klasse definieren</span><br />
<br />
Eine Klasse wird mit dem Schlüsselwort class erstellt. Wir definieren Eigenschaften (Attribute) und Verhaltensweisen (Methoden) für unsere Objekte.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    # Der Bauplan für eine Person<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter</code></div></div><br />
<br />
Die spezielle Funktion __init__ (genannt "Konstruktor") wird immer aufgerufen, wenn du ein neues Objekt erstellst. self bezieht sich auf das Objekt selbst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Ein Objekt erstellen</span><br />
<br />
Um aus deiner Klasse ein Objekt zu erstellen, rufst du den Klassennamen mit den benötigten Werten auf.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>person1 = Person("Dirk", 53)<br />
person2 = Person("Anna", 30)</code></div></div><br />
<br />
Jetzt hast du zwei einzigartige Objekte: person1 und person2, die jeweils nach dem "Bauplan" der Klasse Person erstellt wurden.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Mit Objekten arbeiten</span><br />
<br />
Du kannst auf die Eigenschaften und Methoden eines Objekts mit einem Punkt zugreifen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>print(person1.name)  # Ausgabe: Dirk<br />
print(person2.alter) # Ausgabe: 30</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=18" target="_blank" title="">python-objektorientierte-programmierung-01.jpg</a> (Größe: 85,69 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --> <br />
<br />
Um eine Funktion in der Klasse zu nutzen, fügst du diese einfach hinzu und rufst sie dann über das Objekt auf:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class Person:<br />
    def __init__(self, name, alter):<br />
        self.name = name<br />
        self.alter = alter<br />
<br />
    def sage_hallo(self):<br />
        print(f"Hallo, mein Name ist {self.name}.")<br />
<br />
person1 = Person("Dirk", 42)<br />
person1.sage_hallo() # Ausgabe: Hallo, mein Name ist Dirk.</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=19" target="_blank" title="">python-objektorientierte-programmierung-02.jpg</a> (Größe: 86,45 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch! Du hast die Grundlagen der objektorientierten Programmierung verstanden. Das ist ein großer Meilenstein!<br />
<br />
In der nächsten Lektion werden wir tiefer in die OOP eintauchen und uns mit Vererbung beschäftigen.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 12): Fehler abfangen – so stürzt dein Programm nicht ab]]></title>
			<link>https://www.dirks-computerforum.de/thread-132.html</link>
			<pubDate>Thu, 21 Aug 2025 09:55:09 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-132.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du kannst jetzt Programme schreiben, die mit Nutzern interagieren und sogar Dateien bearbeiten. Aber was passiert, wenn ein Nutzer anstelle einer Zahl einen Buchstaben eingibt? Dein Programm würde abstürzen und einen Fehler anzeigen. Um das zu verhindern, nutzen wir die Fehlerbehandlung.<br />
<br />
Stell dir das wie eine Art Sicherheitsnetz vor: Dein Programm versucht eine Aktion (try), und wenn etwas schiefgeht, springt es in einen zweiten Block (except), um das Problem elegant zu lösen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Die try- und except-Blöcke</span><br />
<br />
Der Code, der möglicherweise einen Fehler verursacht, steht im try-Block. Der Code, der ausgeführt wird, wenn ein Fehler auftritt, steht im except-Block.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>try:<br />
    zahl = int(input("Gib eine ganze Zahl ein: "))<br />
    print("Deine Zahl ist: " + str(zahl))<br />
except:<br />
    print("Das war keine Zahl! Bitte versuche es erneut.")</code></div></div><br />
<br />
Wenn der Nutzer 10 eingibt, wird der Code im try-Block ausgeführt. Gibt er jedoch zehn ein, tritt ein Fehler auf, der except-Block fängt ihn ab und gibt eine freundliche Fehlermeldung aus. Dein Programm stürzt nicht ab!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Einen bestimmten Fehler abfangen</span><br />
<br />
Oft ist es hilfreich zu wissen, welche Art von Fehler aufgetreten ist. Du kannst den except-Block so anpassen, dass er nur auf bestimmte Fehlertypen reagiert. Der Fehler bei der Umwandlung von Text in eine Zahl heißt ValueError.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>try:<br />
    zahl = int(input("Gib eine ganze Zahl ein: "))<br />
    print("Deine Zahl ist: " + str(zahl))<br />
except ValueError:<br />
    print("Ungültige Eingabe! Du musst eine Ziffer eingeben.")<br />
except FileNotFoundError:<br />
    print("Die gesuchte Datei wurde nicht gefunden.")</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=17" target="_blank" title="">python-fehler-abfangen.jpg</a> (Größe: 96,92 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Jetzt kannst du verschiedene Fehler gezielt abfangen. Das ist die Basis für robuste, professionelle Programme.<br />
<br />
In der nächsten Lektion wagen wir uns an ein fortgeschrittenes Thema: die Objektorientierte Programmierung (OOP).<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du kannst jetzt Programme schreiben, die mit Nutzern interagieren und sogar Dateien bearbeiten. Aber was passiert, wenn ein Nutzer anstelle einer Zahl einen Buchstaben eingibt? Dein Programm würde abstürzen und einen Fehler anzeigen. Um das zu verhindern, nutzen wir die Fehlerbehandlung.<br />
<br />
Stell dir das wie eine Art Sicherheitsnetz vor: Dein Programm versucht eine Aktion (try), und wenn etwas schiefgeht, springt es in einen zweiten Block (except), um das Problem elegant zu lösen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Die try- und except-Blöcke</span><br />
<br />
Der Code, der möglicherweise einen Fehler verursacht, steht im try-Block. Der Code, der ausgeführt wird, wenn ein Fehler auftritt, steht im except-Block.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>try:<br />
    zahl = int(input("Gib eine ganze Zahl ein: "))<br />
    print("Deine Zahl ist: " + str(zahl))<br />
except:<br />
    print("Das war keine Zahl! Bitte versuche es erneut.")</code></div></div><br />
<br />
Wenn der Nutzer 10 eingibt, wird der Code im try-Block ausgeführt. Gibt er jedoch zehn ein, tritt ein Fehler auf, der except-Block fängt ihn ab und gibt eine freundliche Fehlermeldung aus. Dein Programm stürzt nicht ab!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Einen bestimmten Fehler abfangen</span><br />
<br />
Oft ist es hilfreich zu wissen, welche Art von Fehler aufgetreten ist. Du kannst den except-Block so anpassen, dass er nur auf bestimmte Fehlertypen reagiert. Der Fehler bei der Umwandlung von Text in eine Zahl heißt ValueError.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>try:<br />
    zahl = int(input("Gib eine ganze Zahl ein: "))<br />
    print("Deine Zahl ist: " + str(zahl))<br />
except ValueError:<br />
    print("Ungültige Eingabe! Du musst eine Ziffer eingeben.")<br />
except FileNotFoundError:<br />
    print("Die gesuchte Datei wurde nicht gefunden.")</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=17" target="_blank" title="">python-fehler-abfangen.jpg</a> (Größe: 96,92 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Jetzt kannst du verschiedene Fehler gezielt abfangen. Das ist die Basis für robuste, professionelle Programme.<br />
<br />
In der nächsten Lektion wagen wir uns an ein fortgeschrittenes Thema: die Objektorientierte Programmierung (OOP).<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 11): Dateien lesen & schreiben]]></title>
			<link>https://www.dirks-computerforum.de/thread-131.html</link>
			<pubDate>Thu, 21 Aug 2025 09:40:21 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-131.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast jetzt gelernt, wie du Werte in Variablen speicherst. Aber was passiert, wenn du dein Programm schließt? Die Variablen sind weg. Um Daten dauerhaft zu speichern, müssen wir mit Dateien arbeiten. Heute lernst du, wie das geht.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Datei öffnen und schließen</span><br />
<br />
Um mit einer Datei zu arbeiten, musst du sie zuerst öffnen. Das geht mit dem Befehl open().<br />
<br />
Du kannst eine Datei in verschiedenen Modi öffnen:<br />
<ul class="mycode_list"><li>'w' (write): Zum Schreiben. Wenn die Datei existiert, wird sie geleert.<br />
</li>
<li>'r' (read): Zum Lesen.<br />
</li>
<li>'a' (append): Zum Hinzufügen von Inhalt am Ende.<br />
</li>
</ul>
<br />
Am sichersten ist es, Dateien mit dem with-Befehl zu öffnen, da Python sie dann automatisch wieder schließt, wenn du fertig bist.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with open("meine_datei.txt", "w") as datei:<br />
    # Hier kommt der Code zum Schreiben oder Lesen hin.<br />
    pass  # Platzhalter, um den Codeblock zu zeigen</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. In eine Datei schreiben</span><br />
<br />
Nachdem du die Datei im w-Modus geöffnet hast, kannst du mit dem Befehl write() etwas in sie hineinschreiben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with open("meine_notiz.txt", "w") as notiz_datei:<br />
    notiz_datei.write("Das ist meine erste Notiz.&#92;n")<br />
    notiz_datei.write("Hallo aus dem Python-Kurs!")</code></div></div><br />
<br />
Wenn du dieses Programm ausführst, wird eine neue Datei namens meine_notiz.txt im selben Ordner erstellt und die beiden Sätze darin gespeichert.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Eine Datei lesen</span><br />
<br />
Um eine Datei zu lesen, öffnest du sie im r-Modus und verwendest den Befehl read().<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with open("meine_notiz.txt", "r") as notiz_datei:<br />
    inhalt = notiz_datei.read()<br />
    print(inhalt)</code></div></div><br />
Dieses Programm wird den gesamten Text aus der Datei in die Variable inhalt laden und ihn anschließend ausgeben.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=16" target="_blank" title="">python-dateien-lesen-schreiben.jpg</a> (Größe: 91,48 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch! Du hast soeben gelernt, wie man dauerhaft mit Dateien arbeitet. Das ist die Grundlage für viele nützliche Programme.<br />
<br />
In der nächsten Lektion werden wir uns mit dem Thema beschäftigen, wie du mögliche Fehler in deinem Programm abfangen kannst.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast jetzt gelernt, wie du Werte in Variablen speicherst. Aber was passiert, wenn du dein Programm schließt? Die Variablen sind weg. Um Daten dauerhaft zu speichern, müssen wir mit Dateien arbeiten. Heute lernst du, wie das geht.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Datei öffnen und schließen</span><br />
<br />
Um mit einer Datei zu arbeiten, musst du sie zuerst öffnen. Das geht mit dem Befehl open().<br />
<br />
Du kannst eine Datei in verschiedenen Modi öffnen:<br />
<ul class="mycode_list"><li>'w' (write): Zum Schreiben. Wenn die Datei existiert, wird sie geleert.<br />
</li>
<li>'r' (read): Zum Lesen.<br />
</li>
<li>'a' (append): Zum Hinzufügen von Inhalt am Ende.<br />
</li>
</ul>
<br />
Am sichersten ist es, Dateien mit dem with-Befehl zu öffnen, da Python sie dann automatisch wieder schließt, wenn du fertig bist.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with open("meine_datei.txt", "w") as datei:<br />
    # Hier kommt der Code zum Schreiben oder Lesen hin.<br />
    pass  # Platzhalter, um den Codeblock zu zeigen</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. In eine Datei schreiben</span><br />
<br />
Nachdem du die Datei im w-Modus geöffnet hast, kannst du mit dem Befehl write() etwas in sie hineinschreiben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with open("meine_notiz.txt", "w") as notiz_datei:<br />
    notiz_datei.write("Das ist meine erste Notiz.&#92;n")<br />
    notiz_datei.write("Hallo aus dem Python-Kurs!")</code></div></div><br />
<br />
Wenn du dieses Programm ausführst, wird eine neue Datei namens meine_notiz.txt im selben Ordner erstellt und die beiden Sätze darin gespeichert.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Eine Datei lesen</span><br />
<br />
Um eine Datei zu lesen, öffnest du sie im r-Modus und verwendest den Befehl read().<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with open("meine_notiz.txt", "r") as notiz_datei:<br />
    inhalt = notiz_datei.read()<br />
    print(inhalt)</code></div></div><br />
Dieses Programm wird den gesamten Text aus der Datei in die Variable inhalt laden und ihn anschließend ausgeben.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=16" target="_blank" title="">python-dateien-lesen-schreiben.jpg</a> (Größe: 91,48 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch! Du hast soeben gelernt, wie man dauerhaft mit Dateien arbeitet. Das ist die Grundlage für viele nützliche Programme.<br />
<br />
In der nächsten Lektion werden wir uns mit dem Thema beschäftigen, wie du mögliche Fehler in deinem Programm abfangen kannst.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 10): Module & Bibliotheken – Code von anderen nutzen]]></title>
			<link>https://www.dirks-computerforum.de/thread-130.html</link>
			<pubDate>Thu, 21 Aug 2025 09:05:17 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-130.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast jetzt schon viel gelernt. Aber in der Programmierung gilt: Warum das Rad neu erfinden? Die meisten nützlichen Funktionen wurden bereits von anderen geschrieben und in sogenannten Modulen oder Bibliotheken gesammelt.<br />
<br />
Ein Modul ist wie eine Werkzeugkiste voller nützlicher Funktionen. Du musst nicht wissen, wie jedes Werkzeug gebaut wurde, sondern nur, wie man es benutzt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Ein Modul importieren</span><br />
<br />
Um die Funktionen aus einem Modul zu nutzen, musst du es zunächst importieren. Dafür benutzt du das Schlüsselwort import. Ein sehr nützliches, eingebautes Modul ist das random-Modul, das dir zufällige Dinge ermöglicht.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>import random<br />
<br />
# Dein Code kommt hier...</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Funktionen aus einem Modul nutzen</span><br />
<br />
Nachdem du ein Modul importiert hast, kannst du seine Funktionen mit einem Punkt aufrufen. Wir können zum Beispiel die Funktion randint() aus dem random-Modul nutzen, um eine zufällige Zahl zu generieren.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>import random<br />
<br />
zufallszahl = random.randint(1, 10)<br />
print(zufallszahl)</code></div></div><br />
<br />
Dieser Code gibt eine zufällige ganze Zahl zwischen 1 und 10 aus.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Kleines Projekt: Zufallsgenerator</span><br />
<br />
Jetzt kannst du das Gelernte anwenden und ein kleines Programm schreiben, das den Nutzer nach seinem Namen fragt und dann eine zufällige Zahl ausgibt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>import random<br />
<br />
name = input("Gib deinen Namen ein: ")<br />
zufallszahl = random.randint(1, 100)<br />
<br />
print(name + ", deine heutige Glückszahl ist: " + str(zufallszahl))</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=15" target="_blank" title="">python-module-bibliotheken.jpg</a> (Größe: 85,83 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch, dein Programm ist jetzt noch mächtiger!<br />
<br />
In der nächsten Lektion werden wir sehen, wie man Dateien liest und schreibt.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast jetzt schon viel gelernt. Aber in der Programmierung gilt: Warum das Rad neu erfinden? Die meisten nützlichen Funktionen wurden bereits von anderen geschrieben und in sogenannten Modulen oder Bibliotheken gesammelt.<br />
<br />
Ein Modul ist wie eine Werkzeugkiste voller nützlicher Funktionen. Du musst nicht wissen, wie jedes Werkzeug gebaut wurde, sondern nur, wie man es benutzt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Ein Modul importieren</span><br />
<br />
Um die Funktionen aus einem Modul zu nutzen, musst du es zunächst importieren. Dafür benutzt du das Schlüsselwort import. Ein sehr nützliches, eingebautes Modul ist das random-Modul, das dir zufällige Dinge ermöglicht.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>import random<br />
<br />
# Dein Code kommt hier...</code></div></div><br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Funktionen aus einem Modul nutzen</span><br />
<br />
Nachdem du ein Modul importiert hast, kannst du seine Funktionen mit einem Punkt aufrufen. Wir können zum Beispiel die Funktion randint() aus dem random-Modul nutzen, um eine zufällige Zahl zu generieren.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>import random<br />
<br />
zufallszahl = random.randint(1, 10)<br />
print(zufallszahl)</code></div></div><br />
<br />
Dieser Code gibt eine zufällige ganze Zahl zwischen 1 und 10 aus.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Kleines Projekt: Zufallsgenerator</span><br />
<br />
Jetzt kannst du das Gelernte anwenden und ein kleines Programm schreiben, das den Nutzer nach seinem Namen fragt und dann eine zufällige Zahl ausgibt.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>import random<br />
<br />
name = input("Gib deinen Namen ein: ")<br />
zufallszahl = random.randint(1, 100)<br />
<br />
print(name + ", deine heutige Glückszahl ist: " + str(zufallszahl))</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=15" target="_blank" title="">python-module-bibliotheken.jpg</a> (Größe: 85,83 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch, dein Programm ist jetzt noch mächtiger!<br />
<br />
In der nächsten Lektion werden wir sehen, wie man Dateien liest und schreibt.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 9): Funktionen – wiederverwendbarer Code]]></title>
			<link>https://www.dirks-computerforum.de/thread-129.html</link>
			<pubDate>Thu, 21 Aug 2025 08:42:55 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-129.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast bereits gelernt, wie man Programme interaktiv macht und Code mit Schleifen wiederholt. Aber was, wenn du einen bestimmten Block von Code an verschiedenen Stellen in deinem Programm nutzen möchtest? Dafür gibt es Funktionen.<br />
<br />
Eine Funktion ist wie eine Mini-Aufgabe, der du einen Namen gibst. Du definierst sie einmal, und dann kannst du sie so oft ausführen, wie du möchtest, indem du einfach ihren Namen aufrufst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Funktion definieren</span><br />
<br />
Eine Funktion wird mit dem Schlüsselwort def erstellt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel (ohne Parameter):</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def sage_hallo():<br />
    print("Hallo!")<br />
    print("Willkommen im Kurs!")</code></div></div><br />
<br />
Dieser Code definiert die Funktion sage_hallo. Er wird aber noch nicht ausgeführt!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Eine Funktion aufrufen</span><br />
<br />
Um den Code in der Funktion auszuführen, musst du die Funktion "aufrufen". Das machst du, indem du einfach ihren Namen gefolgt von Klammern schreibst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>sage_hallo()</code></div></div><br />
<br />
Wenn du dieses Programm ausführst, wird "Hallo!" und "Willkommen im Kurs!" ausgegeben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Funktionen mit Parametern</span><br />
<br />
Funktionen werden erst richtig mächtig, wenn sie Informationen als sogenannte Parameter annehmen können. Du definierst sie in den Klammern der Funktion.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel (mit Parameter):</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def sage_hallo(name):<br />
    print("Hallo, " + name + "!")<br />
<br />
sage_hallo("Dirk")<br />
sage_hallo("Anna")</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=14" target="_blank" title="">python-funktionen.jpg</a> (Größe: 98,17 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Jedes Mal, wenn du die Funktion aufrufst, gibst du einen neuen Namen mit. Das macht die Funktion viel flexibler!<br />
<br />
Herzlichen Glückwunsch, du hast die Grundlagen der Funktionen verstanden! Du kannst jetzt deinen Code sauberer und wiederverwendbarer gestalten.<br />
<br />
In der nächsten Lektion schauen wir uns an, wie man Code von anderen nutzen kann, indem wir Bibliotheken importieren.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
Du hast bereits gelernt, wie man Programme interaktiv macht und Code mit Schleifen wiederholt. Aber was, wenn du einen bestimmten Block von Code an verschiedenen Stellen in deinem Programm nutzen möchtest? Dafür gibt es Funktionen.<br />
<br />
Eine Funktion ist wie eine Mini-Aufgabe, der du einen Namen gibst. Du definierst sie einmal, und dann kannst du sie so oft ausführen, wie du möchtest, indem du einfach ihren Namen aufrufst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Eine Funktion definieren</span><br />
<br />
Eine Funktion wird mit dem Schlüsselwort def erstellt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel (ohne Parameter):</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def sage_hallo():<br />
    print("Hallo!")<br />
    print("Willkommen im Kurs!")</code></div></div><br />
<br />
Dieser Code definiert die Funktion sage_hallo. Er wird aber noch nicht ausgeführt!<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Eine Funktion aufrufen</span><br />
<br />
Um den Code in der Funktion auszuführen, musst du die Funktion "aufrufen". Das machst du, indem du einfach ihren Namen gefolgt von Klammern schreibst.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>sage_hallo()</code></div></div><br />
<br />
Wenn du dieses Programm ausführst, wird "Hallo!" und "Willkommen im Kurs!" ausgegeben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Funktionen mit Parametern</span><br />
<br />
Funktionen werden erst richtig mächtig, wenn sie Informationen als sogenannte Parameter annehmen können. Du definierst sie in den Klammern der Funktion.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel (mit Parameter):</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>def sage_hallo(name):<br />
    print("Hallo, " + name + "!")<br />
<br />
sage_hallo("Dirk")<br />
sage_hallo("Anna")</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=14" target="_blank" title="">python-funktionen.jpg</a> (Größe: 98,17 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Jedes Mal, wenn du die Funktion aufrufst, gibst du einen neuen Namen mit. Das macht die Funktion viel flexibler!<br />
<br />
Herzlichen Glückwunsch, du hast die Grundlagen der Funktionen verstanden! Du kannst jetzt deinen Code sauberer und wiederverwendbarer gestalten.<br />
<br />
In der nächsten Lektion schauen wir uns an, wie man Code von anderen nutzen kann, indem wir Bibliotheken importieren.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 8): Schleifen – Wiederholungen mit for & while]]></title>
			<link>https://www.dirks-computerforum.de/thread-128.html</link>
			<pubDate>Thu, 21 Aug 2025 08:27:07 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-128.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
In den letzten Lektionen hast du gelernt, wie dein Programm "Entscheidungen" treffen kann. Aber was, wenn es eine Aufgabe immer und immer wieder ausführen soll? Das geht mit Schleifen. Schleifen sind das Herzstück von Programmen, die repetitive Aufgaben erledigen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Die for-Schleife</span><br />
<br />
Die for-Schleife ist ideal, wenn du eine bestimmte Aktion eine bekannte Anzahl von Malen wiederholen möchtest oder wenn du durch eine Reihe von Dingen gehen möchtest (z.B. eine Liste von Wörtern).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>for i in range(3): print("Willkommen!")</code></div></div><br />
Dieses Programm wird den Text "Willkommen!" drei Mal ausgeben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Die while-Schleife</span><br />
<br />
Die while-Schleife ist nützlich, wenn du eine Aktion so lange wiederholen möchtest, bis eine bestimmte Bedingung nicht mehr erfüllt ist. Du weißt also vorher nicht, wie oft die Schleife läuft.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>eingabe = ""<br />
while eingabe != "stopp": eingabe = input("Bitte 'stopp' eingeben, um zu beenden: ")</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=13" target="_blank" title="">python-schleifen.jpg</a> (Größe: 100,81 KB / Downloads: 1)
<!-- end: postbit_attachments_attachment --><br />
<br />
Dieses Programm wird so lange nach einer Eingabe fragen, bis der Nutzer das Wort "stopp" eintippt.<br />
<br />
Herzlichen Glückwunsch, dein Programm kann jetzt Aufgaben wiederholen! Das ist ein riesiger Sprung in der Programmierung.<br />
<br />
In der nächsten Lektion werden wir sehen, wie man Code in wiederverwendbare Blöcke verpackt, sogenannte Funktionen. Das macht deine Programme noch sauberer und effizienter.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
In den letzten Lektionen hast du gelernt, wie dein Programm "Entscheidungen" treffen kann. Aber was, wenn es eine Aufgabe immer und immer wieder ausführen soll? Das geht mit Schleifen. Schleifen sind das Herzstück von Programmen, die repetitive Aufgaben erledigen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Die for-Schleife</span><br />
<br />
Die for-Schleife ist ideal, wenn du eine bestimmte Aktion eine bekannte Anzahl von Malen wiederholen möchtest oder wenn du durch eine Reihe von Dingen gehen möchtest (z.B. eine Liste von Wörtern).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>for i in range(3): print("Willkommen!")</code></div></div><br />
Dieses Programm wird den Text "Willkommen!" drei Mal ausgeben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Die while-Schleife</span><br />
<br />
Die while-Schleife ist nützlich, wenn du eine Aktion so lange wiederholen möchtest, bis eine bestimmte Bedingung nicht mehr erfüllt ist. Du weißt also vorher nicht, wie oft die Schleife läuft.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>eingabe = ""<br />
while eingabe != "stopp": eingabe = input("Bitte 'stopp' eingeben, um zu beenden: ")</code></div></div><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=13" target="_blank" title="">python-schleifen.jpg</a> (Größe: 100,81 KB / Downloads: 1)
<!-- end: postbit_attachments_attachment --><br />
<br />
Dieses Programm wird so lange nach einer Eingabe fragen, bis der Nutzer das Wort "stopp" eintippt.<br />
<br />
Herzlichen Glückwunsch, dein Programm kann jetzt Aufgaben wiederholen! Das ist ein riesiger Sprung in der Programmierung.<br />
<br />
In der nächsten Lektion werden wir sehen, wie man Code in wiederverwendbare Blöcke verpackt, sogenannte Funktionen. Das macht deine Programme noch sauberer und effizienter.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 7): Nutzereingaben & Wenn-Dann-Entscheidungen (if-else)]]></title>
			<link>https://www.dirks-computerforum.de/thread-127.html</link>
			<pubDate>Thu, 21 Aug 2025 08:05:13 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-127.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
In den letzten Lektionen hast du gelernt, wie du Werte speichern und mit ihnen rechnen kannst. Aber was, wenn dein Programm auf den Nutzer reagieren soll? Heute lernst du, wie du Eingaben von Nutzern verarbeitest und wie dein Programm "Entscheidungen" trifft.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Nutzereingaben verarbeiten</span><br />
<br />
Mit dem Befehl input() kannst du den Nutzer um eine Eingabe bitten. Der Wert, den der Nutzer eingibt, wird in einer Variable gespeichert. Ganz wichtig: Egal, was der Nutzer eingibt, es ist immer ein Text (str).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>name = input("Gib deinen Namen ein: ")<br />
print("Hallo, " + name + "!")</code></div></div><br />
<br />
Wenn der Nutzer "Dirk" eingibt, wird das Programm "Hallo, Dirk!" ausgeben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Wenn-Dann-Entscheidungen (if/else)</span><br />
<br />
Damit dein Programm auf unterschiedliche Eingaben reagieren kann, brauchst du eine "Wenn-Dann"-Logik. Das geht mit dem Befehl if.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>alter = int(input("Gib dein Alter ein: ")) # Wir wandeln die Eingabe sofort in eine Zahl um!<br />
<br />
if alter &gt;= 18: print("Du bist volljährig.")<br />
else: print("Du bist noch nicht volljährig.")</code></div></div><br />
<ul class="mycode_list"><li>if alter &gt;= 18:: Wenn die Bedingung erfüllt ist (Alter ist größer oder gleich 18), wird der Code darunter ausgeführt.<br />
</li>
<li>else:: Ansonsten (wenn die Bedingung nicht erfüllt ist), wird der Code unter else ausgeführt.<br />
</li>
</ul>
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=12" target="_blank" title="">python-nutzereingaben-wenn-dann.jpg</a> (Größe: 107,71 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch, dein Programm kann jetzt mit Nutzern interagieren und logische Entscheidungen treffen!<br />
<br />
In der nächsten Lektion schauen wir uns an, wie man Programme mit Schleifen wiederholt, ohne den Code neu schreiben zu müssen.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
In den letzten Lektionen hast du gelernt, wie du Werte speichern und mit ihnen rechnen kannst. Aber was, wenn dein Programm auf den Nutzer reagieren soll? Heute lernst du, wie du Eingaben von Nutzern verarbeitest und wie dein Programm "Entscheidungen" trifft.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Nutzereingaben verarbeiten</span><br />
<br />
Mit dem Befehl input() kannst du den Nutzer um eine Eingabe bitten. Der Wert, den der Nutzer eingibt, wird in einer Variable gespeichert. Ganz wichtig: Egal, was der Nutzer eingibt, es ist immer ein Text (str).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>name = input("Gib deinen Namen ein: ")<br />
print("Hallo, " + name + "!")</code></div></div><br />
<br />
Wenn der Nutzer "Dirk" eingibt, wird das Programm "Hallo, Dirk!" ausgeben.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Wenn-Dann-Entscheidungen (if/else)</span><br />
<br />
Damit dein Programm auf unterschiedliche Eingaben reagieren kann, brauchst du eine "Wenn-Dann"-Logik. Das geht mit dem Befehl if.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>alter = int(input("Gib dein Alter ein: ")) # Wir wandeln die Eingabe sofort in eine Zahl um!<br />
<br />
if alter &gt;= 18: print("Du bist volljährig.")<br />
else: print("Du bist noch nicht volljährig.")</code></div></div><br />
<ul class="mycode_list"><li>if alter &gt;= 18:: Wenn die Bedingung erfüllt ist (Alter ist größer oder gleich 18), wird der Code darunter ausgeführt.<br />
</li>
<li>else:: Ansonsten (wenn die Bedingung nicht erfüllt ist), wird der Code unter else ausgeführt.<br />
</li>
</ul>
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.dirks-computerforum.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=12" target="_blank" title="">python-nutzereingaben-wenn-dann.jpg</a> (Größe: 107,71 KB / Downloads: 0)
<!-- end: postbit_attachments_attachment --><br />
<br />
Herzlichen Glückwunsch, dein Programm kann jetzt mit Nutzern interagieren und logische Entscheidungen treffen!<br />
<br />
In der nächsten Lektion schauen wir uns an, wie man Programme mit Schleifen wiederholt, ohne den Code neu schreiben zu müssen.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python-Kurs (Teil 6): Rechnen mit Datentypen & einfache Operationen]]></title>
			<link>https://www.dirks-computerforum.de/thread-126.html</link>
			<pubDate>Thu, 21 Aug 2025 07:27:28 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.dirks-computerforum.de/member.php?action=profile&uid=1">computerdirk</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.dirks-computerforum.de/thread-126.html</guid>
			<description><![CDATA[Hallo und willkommen zurück!<br />
<br />
In unserer letzten Lektion haben wir die verschiedenen Arten von Werten – die Datentypen – kennengelernt. Heute werden wir sehen, wie man mit diesen Werten arbeitet und sie verändert.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Rechnen mit Zahlen</span><br />
<br />
Mit den numerischen Datentypen (int und float) kannst du ganz normal rechnen. Python verwendet die bekannten Operatoren:<br />
<ul class="mycode_list"><li>+ für Addition<br />
</li>
<li>- für Subtraktion<br />
</li>
<li>* für Multiplikation<br />
</li>
<li>/ für Division<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>x = 10<br />
y = 5<br />
<br />
print(x + y)  # Ausgabe: 15<br />
print(x * y)  # Ausgabe: 50</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">2. Operationen mit Text (Strings)</span><br />
<br />
Auch mit Text kannst du bestimmte Operationen durchführen, aber es sind andere als bei Zahlen.<br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Verkettung (Concatenation)</span>: Du kannst zwei oder mehr Texte mit dem +-Operator zu einem neuen Text zusammenfügen.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>begruessung = "Hallo" + " " + "Dirk"<br />
print(begruessung)  # Ausgabe: Hallo Dirk</code></div></div><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Wiederholung (Repetition)</span>: Du kannst einen Text mit dem *-Operator wiederholen.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>print("Yeah!" * 3)  # Ausgabe: Yeah!Yeah!Yeah!</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">3. Typkonvertierung (Werte umwandeln)</span><br />
<br />
Was passiert, wenn man versucht, einen Text und eine Zahl zu addieren? Das geht nicht! Python gibt dann einen Fehler aus. Aber du kannst den Datentyp eines Wertes umwandeln, um das Problem zu lösen.<br />
<ul class="mycode_list"><li>Mit str() wandelst du einen Wert in einen Text um.<br />
</li>
<li>Mit int() wandelst du einen Wert in eine ganze Zahl um.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>preis = 10.99<br />
print("Der Preis ist: " + str(preis) + " €") # Funktioniert, weil die Zahl umgewandelt wurde</code></div></div><br />
Herzlichen Glückwunsch, du kannst jetzt grundlegende Operationen mit deinen Daten durchführen! In der nächsten Lektion gehen wir einen Schritt weiter und lernen, wie du Eingaben von Nutzern verarbeiten kannst.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></description>
			<content:encoded><![CDATA[Hallo und willkommen zurück!<br />
<br />
In unserer letzten Lektion haben wir die verschiedenen Arten von Werten – die Datentypen – kennengelernt. Heute werden wir sehen, wie man mit diesen Werten arbeitet und sie verändert.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Rechnen mit Zahlen</span><br />
<br />
Mit den numerischen Datentypen (int und float) kannst du ganz normal rechnen. Python verwendet die bekannten Operatoren:<br />
<ul class="mycode_list"><li>+ für Addition<br />
</li>
<li>- für Subtraktion<br />
</li>
<li>* für Multiplikation<br />
</li>
<li>/ für Division<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>x = 10<br />
y = 5<br />
<br />
print(x + y)  # Ausgabe: 15<br />
print(x * y)  # Ausgabe: 50</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">2. Operationen mit Text (Strings)</span><br />
<br />
Auch mit Text kannst du bestimmte Operationen durchführen, aber es sind andere als bei Zahlen.<br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Verkettung (Concatenation)</span>: Du kannst zwei oder mehr Texte mit dem +-Operator zu einem neuen Text zusammenfügen.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>begruessung = "Hallo" + " " + "Dirk"<br />
print(begruessung)  # Ausgabe: Hallo Dirk</code></div></div><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Wiederholung (Repetition)</span>: Du kannst einen Text mit dem *-Operator wiederholen.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>print("Yeah!" * 3)  # Ausgabe: Yeah!Yeah!Yeah!</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">3. Typkonvertierung (Werte umwandeln)</span><br />
<br />
Was passiert, wenn man versucht, einen Text und eine Zahl zu addieren? Das geht nicht! Python gibt dann einen Fehler aus. Aber du kannst den Datentyp eines Wertes umwandeln, um das Problem zu lösen.<br />
<ul class="mycode_list"><li>Mit str() wandelst du einen Wert in einen Text um.<br />
</li>
<li>Mit int() wandelst du einen Wert in eine ganze Zahl um.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Beispiel:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>preis = 10.99<br />
print("Der Preis ist: " + str(preis) + " €") # Funktioniert, weil die Zahl umgewandelt wurde</code></div></div><br />
Herzlichen Glückwunsch, du kannst jetzt grundlegende Operationen mit deinen Daten durchführen! In der nächsten Lektion gehen wir einen Schritt weiter und lernen, wie du Eingaben von Nutzern verarbeiten kannst.<br />
<br />
&lt;&lt; Zurück zur Kurs-Übersicht: <a href="https://www.dirks-computerforum.de/thread-121.html" target="_blank" rel="noopener" class="mycode_url">Was ist Python und warum du es lernen solltest</a>]]></content:encoded>
		</item>
	</channel>
</rss>