This is an old revision of the document!
Ein- und Ausgabe, Variablen
Zum Aufwärmen: Wiederholung etc.
Besprechung der Hausaufgabe.
Lernziele heute
- Wie geht Ein- und Ausgabe in Python?
- Wie speichert man Daten und verarbeitet sie?
Tipp des Tages
- Lernen geht am besten durch Spielen!
- Beim Programmieren immer Sachen ausprobieren, den Code leicht verändern, kreativ sein! So kann man viel lernen.
Lernen am Beispiel und durch Demonstration
Wir schreiben gemeinsam ein Programm1) und ich erkläre dabei möglichst viel (per Einzelschritt-Debugging durchgehen; Tabelle mit Namen und Werten und Typen der Variablen).
Variablen dienen dem Speichern von Daten, insbesondere von Zahlen und Zeichenketten/Text.
- Jede Variable hat einen Namen und einen Wert.
- Mit dem Zeichen “=” weist man einer Variablen einen Wert zu. Wenn die Variable noch nicht existiert, wird sie erzeugt.
- Der Befehl
x = 3
erzeugt eine Variable (mit Namen)x
und Wert3
, wenn es noch keine Variablex
gibt. - Existiert die Variable
x
bereits, so weistx = 3
der Variablenx
den Wert3
zu. - Rechts vom Gleichheitszeichen sind auch Ausdrücke erlaubt, die
x
enthalten, etwax = 3 * x + 2
oderx = 3 * x + y
. Dann wird der Ausdruck rechts des Gleichheitszeichens berechnet (dabei wird der “alte” Wert vonx
verwendet) und zum “neuen” Wert der Variablenx
. - Jede Variable hat einen Typ, etwa den Typ
int
aliasinteger
, also “normale” Zahl, oder den Typfloat
aliasfloating point
, also Fliesskommazahl, d.h. Kommazahl. - Ein- und Ausgabe und weiteres ist in den Kommentaren im Programm in der nachfolgenden Aufgabe erklärt.
Wiederholungsaufgabe
Unten steht mehr oder weniger das Programm, das wir gerade geschrieben haben, aber mit Zusatzkommentaren (falls ich mündlich etwas vergessen habe…). Führe es im Einzelschrittmodus aus und lies alle Kommentare. Bei jedem Schritt ändert sich etwas in Tigerjython, entweder im Ausgabefenster unten oder in der “Variablentabelle” rechts. Versuche, jeden einzelnen Schritt zu verstehen. Du darfst gerne Teile des Programms verändern. Bei Fragen melden!
# Ausgabe von Zeichenketten print("Grüezi zäme!") print("------------------") print("Zahlen") # Ausgabe von Zahlen und Rechnen mit Zahlen print(5) print(5+4) print(5*3) print(5/2) print("------------------") print("Variablen") # Mit Variablen kann man Zahlen wie -2, -1, 0, 1, 2, ... 42 speichern. # Das Gleichheitszeichen ist ein Zuweisungszeichen: # Der Variablen x wird der Wert rechts des Gleichheitszeichens zugewiesen. x = 2 print(x) # Man kann mit Variablen rechnen. print(3*x) # Variablen können wilde Namen haben. meinFreund_Nummer17a = 3 * x + 5 # Es ist Konvention, dass Variablen mit einem Kleinbuchstaben anfangen. # Die meisten Sonderzeichen wie *, +, !, = in Variablennamen sind verboten, # denn sie werden anderweitig verwendet. # Auch bereits belegte Namen wie "print", "penUp" etc. sind verboten. print(meinFreund_Nummer17a) abc = meinFreund_Nummer17a / x print(abc) # Wie schon oben verwendet, hat das Gleichheitszeichen # beim Programmieren eine Zuweisungsfunktion. # Die nächste Programmzeile weist der bereits existierenden Variablen x einen neuen Wert zu. # Der Ausdruck rechts des Gleichheitszeichens wird (unter Verwendung des # "alten" Werts von x) berechnet. Das Ergebnis ist der neue Wert von x. x = x+1 # Beachte, dass x hier sowohl rechts als auch links des # Zeichens "=" auftaucht. # # Achtung: # In der Mathematik ist die obige Gleichung relativ uninteressant: Sie ist für keinen Wert von x erfüllt. # Später: Die mathematische Abfrage auf Gleichheit wird mit "==" geschrieben. print(x) x= meinFreund_Nummer17a-x print(x) # Jede Variablen hat nicht nur einen Namen und einen Wert, sondern auch einen Typ. print("------------------") print("Der Typ einer Variablen") print(type(x)) print(type(meinFreund_Nummer17a)) print(type(abc)) print("------------------") print("Eingabe von Zahlen") # Eingabe von Integers, also Zahlen ohne Komma. # Die mit Anführungszeichen markierte Zeichenkette wird angezeigt. # Zurückgeliefert wird die eingegebene Zahl. eingegebeneZahl = inputInt("Gib eine Zahl ein!") # Oft ist es wie hier getan sinnvoll, sprechende Variablennamen zu verwenden. # Dann erinnert man sich sofort, was gemeint ist. print(eingegebeneZahl) k = inputFloat("Gib eine Kommazahl (oder eine 'normale' Zahl) ein!") print(k)
Aufgaben
HAUSAUFGABE für die 1AFG:
Abgabe bis spätestens Sonntagabend 23:59 Uhr vor der nächsten Doppellektion über den folgenden Link:
Schreibe ein Programm, das vom Benutzer zwei Zahlen einliest (integer oder float, wie du willst) und ihre Summe und ihr Produkt ausgibt. Eine Beispielausgabe des Programms könnte lauten:
Salü! ----------------------------- Eingegeben Zahlen: 13 und -3 ***************************** Summe dieser Zahlen: 10 Produkt dieser Zahlen: -29 ----------------------------- Uf Wiederluege!
HAUSAUFGABE für die 1CFP (oder eine der nachfolgenden Aufgaben):
Abgabe bis spätestens Sonntagabend 23:59 Uhr vor der nächsten Doppellektion über den folgenden Link:
Schreibe ein Programm, das eine Zahl (zwischen 1 und 10) entgegennimmt und die entsprechende Spalte in der Kleinen-Einmaleins-Tabelle ausgibt.
Bei Eingabe 7 sollte die Ausgabe so aussehen:
7 14 21 28 35 42 49 56 63 70
Bemerkung: Es geht ohne repeat
-Struktur, aber deutlich eleganter mit repeat
. Versuche, diese Lösung zu finden!
Bonusaufgabe (Seerosenfläche auf einem (unendlich grossen) See verdoppelt sich jede Woche): Verändere das Programm so, dass zuerst die eingegebene Zahl ausgegeben wird und dann von jeder Zeile zur nächsten eine Verdopplung stattfindet. Statt einer Verdopplung (= Multiplikation mit 2) kannst du auch mit einem beliebigen anderen Wachstumsfaktor, etwa 1.3, multiplizieren. Dies simulert exponentielles Wachstum.
Turtle-Exkurs: Ersetze die drei letzten Zeilen des folgenden Programms so, dass es ein regelmässiges n
-Eck mit Seitenlänge s
zeichnet.
Für die angegebenen Werte soll also ein 7-Eck mit Seitenlänge 100 (in Pixel) gezeichnet werden.
Wenn man stattdessen n = 13
und s = 80
schreibt, soll ein 13-Eck mit Seitenlänge 80 gezeichnet werden.
from gturtle import * makeTurtle() n = 7 s = 100 ?????? ?????? ??????
Bemerkung: Wenn du n = 360
setzt und s
klein wählst, bekommst du (fast) einen Kreis.
Zusammenfassung
Key take-aways
Bonusaufgaben (Textausgabe)
Schreibe ein Programm, das eine positive Zahl entgegennimmt und die Summe aller Zahlen von 1 bis zu dieser Zahl ausrechnet.
Beispiel: Bei Eingabe 9 sollte als Ergebnis 45 ausgegeben werden, denn $1+2+3+4+5+6+7+8+9=45$. Die Ausgabe sollte also etwa so aussehen:
Die Summe aller Zahlen von 1 bis 9 ist 45
Schreibe ein Programm, das das Kleine Einmaleins als Tabelle ausgibt. Die Tabelle darf wild aussehen:
1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100
Benötigtes Zusatzwissen:
- Mit
str(x)
wandelt man eine Integer-Variablex
in eine Zeichenkette um. - Mit
+
kann man Zeichenketten hintereinanderhängen. Beispielprint(“Hallo ” + “Welt!”)
.