Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:snr:informatik:glf22:python:variablen-input-output [2022/09/04 21:03] – [Datentypen] Olaf Schnürer | lehrkraefte:snr:informatik:glf22:python:variablen-input-output [2023/09/03 17:45] (current) – [Aufgaben zum sinnvollen Einsatz von Variablen] Olaf Schnürer | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ~~NOTOC~~ | ||
| + | |||
| + | ====== Ausgabe (= output), Eingabe (= input) und Variablen ====== | ||
| + | |||
| + | ===== Hello World und Arithmetik (= Rechnen mit Zahlen) mit Python ===== | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | * (a) Schau dir den folgenden Screencast an und probiere parallel dazu an deinem eigenen Computer alles aus, was ich erkläre: (Wer Linux statt Windows verwendet: Statt der " | ||
| + | |||
| + | * (b) Finde nun selbständig heraus, was die Rechenzeichen ''< | ||
| + | |||
| + | <hidden Hinweis:> | ||
| + | </ | ||
| + | <hidden Hinweis für die beiden letzten Rechenzeichen> | ||
| + | <code python> | ||
| + | print(73 // 7) | ||
| + | print(73 % 7) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | <hidden Lösung:> | ||
| + | | ||
| + | Dies wird auch im Video im folgenden Abschnitt zur Python-Shell erklärt.</ | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Python-Shell (oder REPL) ===== | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Wenn man nur mal kurz einen Befehl in Python ausprobieren möchte, ist die sogenannte Python-[[https:// | ||
| + | [[https:// | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Schau dir das folgende Video zur Python-Shell an und probiere es parallel selbst aus. (Wer Linux statt Windows benutzt: Die Python-Shell öffnet man wie folgt: Öffne ein Terminal (Hotkey '' | ||
| + | |||
| + | Die Kommunikation mit dem Computer funktioniert in Shells meist nach dem folgenden Muster (rein tastaturbasiert): | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Nachträge zum Video: | ||
| + | * Die Python-Shell verlässt man per Tastatur durch Eingabe von '' | ||
| + | * Auch die App [[https:// | ||
| + | * Mit den den Pfeiltaste '' | ||
| + | * Mit der Tabulator-Taste '' | ||
| + | * Wenn du in der Python-Shell (oder der " | ||
| + | </ | ||
| + | |||
| + | ===== Rechnen mit Zeichenketten (= Strings) ===== | ||
| + | |||
| + | Zeichenketten (= strings) werden in Python in Anführungszeichen notiert; beispielsweise ist ''" | ||
| + | |||
| + | In der folgenden Aufgabe lernst du, wie man in Python mit Zeichenketten " | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | * (a) Zum Aufwärmen: Berechne in der Python-Shell die folgenden Ausdrücke: | ||
| + | * ''" | ||
| + | * ''" | ||
| + | * '' | ||
| + | * '' | ||
| + | * ''" | ||
| + | * ''" | ||
| + | | ||
| + | <hidden Lösung:> | ||
| + | * Das Addieren von zwei (oder mehreren) Strings ist das " | ||
| + | * Die Multiplikation einer positiven Zahl mit einem String hängt diesen so oft hintereinander, | ||
| + | * Die anderen Operationen ("Zahl plus String" | ||
| + | </ | ||
| + | * (b) Lies das folgende Python-Programm und überlege, was es ausgibt. Führe es dann auf deinem Computer aus und teste so dein Verständnis. <code python rechnen-mit-zeichenketten.py> | ||
| + | print(3 * " | ||
| + | print(3 * 7) | ||
| + | print(" | ||
| + | print(" | ||
| + | print(3 * ' | ||
| + | print() | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | print(3 + 7) | ||
| + | print(3 * (3 + 2 * 2)) | ||
| + | print("" | ||
| + | |||
| + | # Zeilen, die mit dem Zeichen "#" | ||
| + | # Sie werden bei der Ausführung des Programmes ignoriert. | ||
| + | # ... und zum Abschluss noch ein paar schwierigere Ausdrücke: | ||
| + | print(5 * " | ||
| + | print(5 * (" | ||
| + | print(3 * (2 * " | ||
| + | |||
| + | print(2 * (" | ||
| + | </ | ||
| + | * Schreibe ein Python-Programm, | ||
| + | Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid. Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid. Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid. Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid. Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid. | ||
| + | |||
| + | Es folgt 10 mal das Wort Algorithmus: | ||
| + | |||
| + | Die Hälfte der Hälfte der Hälfte der Hälfte der Hälfte der Hälfte der Hälfte der Hälfte der Hälfte der Hälfte ist ein 1024-stel.</ | ||
| + | <hidden Lösungsvorschlag.> | ||
| + | <code python blaukraut.py> | ||
| + | print(5 * " | ||
| + | print() | ||
| + | print(" | ||
| + | print() | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Strings mit Zeilenumbruch ==== | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Die Zeichenkombination '' | ||
| + | In der folgenden Aufgabe wirst du lernen, wie man sie nutzen kann. | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | * (a) Speichere das folgende Python-Programm und führe es aus.((Die Wortlängen kodieren die ersten Nachkommastellen der Kreiszahl $\pi$, vgl. https:// | ||
| + | print(" | ||
| + | </ | ||
| + | * (b) Ergänze dein Programm um //einen// '' | ||
| + | Nach diesem Wort | ||
| + | kommt ein Zeilenumbruch.</ | ||
| + | <hidden Lösungsvorschlag:> | ||
| + | Ergänze die folgende Code-Zeile. Dabei ist das " | ||
| + | <code python> | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | * < | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | Ich liebe Informatik! | ||
| + | </ | ||
| + | <hidden Lösungsvorschlag:> | ||
| + | <code python> | ||
| + | print(10 * "Ich liebe Informatik!\n" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | * (d) Ergänze dein Programm um //eine// weitere, möglichst kurze Code-Zeile, die das folgende " | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | </ | ||
| + | <hidden Lösungsvorschlag:> | ||
| + | <code python> | ||
| + | print(6*((30*" | ||
| + | </ | ||
| + | </ | ||
| + | * Bonus: Ergänze dein Programm um //eine// weitere, möglichst kurze Code-Zeile, die das folgende Muster (4 Zeilen, 13 Pluszeichen pro Zeile) als Ausgabe erzeugt:< | ||
| + | +--+--+--+--+--+--+--+--+--+--+--+--+ | ||
| + | +--+--+--+--+--+--+--+--+--+--+--+--+ | ||
| + | +--+--+--+--+--+--+--+--+--+--+--+--+ | ||
| + | +--+--+--+--+--+--+--+--+--+--+--+--+ | ||
| + | </ | ||
| + | <hidden Lösungsvorschlag:> | ||
| + | <code python> | ||
| + | print(4 * (12 * " | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Eingabe, Variablen und Datentypen ===== | ||
| + | <WRAP center round info> | ||
| + | Das Benutzen von Apps (= Computer-Programmen) an Computer oder Handy beruht fast immer darauf, dass der Benutzer etwas eingibt, der Computer die Eingabe verarbeitet und eine Antwort ausgibt: | ||
| + | |||
| + | * Bei einer Wetter-App auf dem Handy beispielsweise gibt der Benutzer einen Ort ein, das Handy beschafft sich die Wetterprognose zu diesem Ort (in der Regel von einem oder mehreren Wetterdiensten) und zeigt sie an. | ||
| + | * Die übliche alltägliche Interaktion mit dem Computer in Apps beruht auf Tastatur- und Maus-Eingaben (als " | ||
| + | |||
| + | Man spricht auch von dem [[https:// | ||
| + | |||
| + | Ausgabe (Textausgabe per '' | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Schau dir das folgende Video an und programmiere parallel dazu alles an deinem Rechner mit. Im Video wirst du mehrmals dazu aufgefordert, | ||
| + | |||
| + | [[https:// | ||
| + | .mp4|Video " | ||
| + | |||
| + | <hidden Endzustand des Python-Programms, | ||
| + | <code python begruessung.py> | ||
| + | vorname = input(" | ||
| + | nachname = input(" | ||
| + | print(" | ||
| + | |||
| + | alter = input(" | ||
| + | x = int(alter) | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Vertiefende Erklärungen zu den im Video bereits angesprochenen Themen ===== | ||
| + | |||
| + | Wenn du mutig bist oder nicht so viel Theorie lesen willst, kannst du sofort versuchen, die Aufgaben im Abschnitt | ||
| + | [[lehrkraefte: | ||
| + | zu lösen. Sonst oder wenn du dabei Probleme hast: Lies hier weiter! | ||
| + | ==== Datentypen ==== | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Man unterscheidet Daten nach ihrem Typ. Dieser Typ, genannt // | ||
| + | |||
| + | Bei einer Person sind z. B. ihr Name und ihre Grösse wichtige Daten. Der Name einer Person ist eine Zeichenkette (etwa ''" | ||
| + | |||
| + | In Python gibt es die folgenden Datentypen: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * einige andere Datentypen (etwa Listen), die wir teilweise später kennenlernen werden. | ||
| + | |||
| + | Den Typ kann man in Python mit dem Befehl '' | ||
| + | * Im Video habe ich in der Shell Befehle wie '' | ||
| + | |||
| + | Wie im Video erklärt, ist es oft nützlich, Daten eines Typs in einen anderen Typ umzuwandeln: | ||
| + | * Verwandlung von Zeichenketten in Zahlen: | ||
| + | * strings (kurz für "Daten vom Typ string" | ||
| + | * Analog kann man strings, die Kommazahlen darstellen, mit dem Befehl '' | ||
| + | * Verwandlung von Zahlen in Strings: | ||
| + | * Dies geschieht mit dem Befehl '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Variablen ==== | ||
| + | <WRAP round info> | ||
| + | Variablen sind " | ||
| + | |||
| + | Beispiel: Im Video kam die Variable (mit Namen) '' | ||
| + | |||
| + | Ähnlich: | ||
| + | * // | ||
| + | * // | ||
| + | |||
| + | Namen von Variablen beginnen in der Regel mit einem Kleinbuchstaben, | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * nicht erlaubt ist '' | ||
| + | Je aussagekräftiger der Variablenname ist, desto leichter tut man sich beim Programmieren und desto leichter sind die Programme für andere Leute verständlich. | ||
| + | </ | ||
| + | |||
| + | <WRAP center round box> | ||
| + | Mein Aufschrieb zu Variablen aus dem Video, den ich nun noch etwas ergänzt habe: In der Tabelle werden die Variablen samt ihrer Werte und Typen am Ende eines geeigneten Programmablaufs dargestellt: | ||
| + | |||
| + | {{: | ||
| + | </ | ||
| + | |||
| + | ==== Eingabe von Zeichenketten und Zahlen ==== | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Wenn du vom Benutzer eine Zeichenkette einlesen willst und die Eingabe in der Variablen '' | ||
| + | <code python> | ||
| + | s = input(" | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Wenn du vom Benutzer eine ganze Zahl einlesen willst und die Eingabe in der Variablen '' | ||
| + | <code python> | ||
| + | x = int(input(" | ||
| + | </ | ||
| + | Beachte: Der Befehl '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Wenn du vom Benutzer eine Kommazahl einlesen willst und die Eingabe in der Variablen '' | ||
| + | <code python> | ||
| + | x = float(input(" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Wie man Variablen kreiert und mit ihnen rechnet ==== | ||
| + | |||
| + | <WRAP round info> | ||
| + | Im folgenden Video erkläre ich unter anderem, | ||
| + | * wie man Variablen kreiert (sie müssen initialisiert werden); | ||
| + | * dass man mit Variablen "ganz normal" | ||
| + | * dass das Zeichen '' | ||
| + | Intuitiv ist dir dies alles vielleicht bereits klar, trotzdem empfehle ich das Video. | ||
| + | |||
| + | [[https:// | ||
| + | .mp4|Video " | ||
| + | </ | ||
| + | |||
| + | ===== Aufgaben zum sinnvollen Einsatz von Variablen ===== | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Schreibe ein Programm, das den Benutzer zur Eingabe einer (positiven ganzen) Zahle auffordert (etwa die Liebe zur Informatik auf einer Skala von 1 bis 10) und daraufhin entsprechend oft den Satz '' | ||
| + | |||
| + | <hidden Hinweis:> | ||
| + | Rechnen mit Zeichenketten! | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | <code python> | ||
| + | n = int(input(" | ||
| + | print(n * "Ich liebe Informatik!\n" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Schreibe ein Programm, das den Benutzer zur Eingabe zweier ganzer Zahlen auffordert. Das Programm soll ausgeben: | ||
| + | * die beiden eingegebenen Zahlen, | ||
| + | * die Summe der beiden Zahlen, | ||
| + | * das Produkt der beiden Zahlen, | ||
| + | * Bonus: das Ergebnis der Division mit Rest, | ||
| + | und zwar jeweils mit sinnvoller Erklärung der Ausgabe. | ||
| + | |||
| + | Bei der Eingabe der beiden Zahlen $33$ und $7$ könnte der Dialog mit dem Computer beispielsweise so aussehen: | ||
| + | <code text> | ||
| + | Gib eine Zahl x ein: 33 | ||
| + | Gib eine weitere Zahl y ein: 7 | ||
| + | Du hast die beiden Zahlen x = 33 und y = 7 eingegeben. | ||
| + | Die Summe dieser beiden Zahlen ist x+y = 40. | ||
| + | Das Produkt dieser beiden Zahlen ist x*y = 231. | ||
| + | Ganzzahlige Division: 33 dividiert durch 7 ist 4 Rest 5. | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | <code python summe-und-produkt.py> | ||
| + | x = int(input(" | ||
| + | y = int(input(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Schreibe ein Programm, das den Benutzer zur Eingabe zweier (positiver ganzer) Zahlen auffordert. Das Programm soll daraufhin ein " | ||
| + | |||
| + | Beispiel: | ||
| + | Bei Eingabe der Zahlen 30 als Breite und 6 als Länge soll die Ausgabe wie folgt aussehen: | ||
| + | <code text> | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | ++++++++++++++++++++++++++++++ | ||
| + | </ | ||
| + | <!-- | ||
| + | <hidden Lösungsvorschlag:> | ||
| + | <code python> | ||
| + | breite = int(input(" | ||
| + | hoehe = int(input(" | ||
| + | print(hoehe * (breite * " | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | <WRAP round todo> | ||
| + | Ergänze den (unvollständigen) Python-Code | ||
| + | <code python> | ||
| + | n = # eine beliebige natürliche Zahl | ||
| + | </ | ||
| + | zu einem kurzen, aber " | ||
| + | <code text> | ||
| + | +--+--+--+--+ | ||
| + | | | | | | | ||
| + | +--+--+--+--+ | ||
| + | | | | | | | ||
| + | +--+--+--+--+ | ||
| + | | | | | | | ||
| + | +--+--+--+--+ | ||
| + | | | | | | | ||
| + | +--+--+--+--+ | ||
| + | </ | ||
| + | <hidden Hinweis:> | ||
| + | Definiere zwei String-Variablen '' | ||
| + | |||
| + | <!-- | ||
| + | <hidden Lösungsvorschlag:> | ||
| + | <code python> | ||
| + | n = 7 | ||
| + | zeile1 = n * " | ||
| + | zeile2 = n * " | ||
| + | print(n*(zeile1 + " | ||
| + | </ | ||
| + | </ | ||
| + | --> | ||
| + | </ | ||
| + | |||
| + | ===== Bonus-Material ===== | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Auf [[https:// | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Mit dem obigen Wissen kannst du bereits einige der | ||
| + | * [[https:// | ||
| + | lösen. | ||
| + | |||
| + | Es gibt dort auch ein | ||
| + | * [[https:// | ||
| + | jedoch muss man alle Fragen beantworten, | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Link zur Kursseite ===== | ||
| + | |||
| + | [[lehrkraefte: | ||