Skript Python

Werbung
Pete Moor | Klasse 14r
Programmieren
mit Python
In diesem Kurs lernen Sie:
• ... nicht in erster Linie zu programmieren, denn dazu braucht es sehr viel know-how und
jahrelange Routine.
• Sie erfahren jedoch, dass Computerprogramme ihr tägliches Leben beeinflussen.
• Sie erhalten einen Eindruck in das Programmieren, indem Sie einfache Programme in der
Programmiersprache Python schreiben und diese ablaufen lassen.
• Sie arbeiten mit einfachen Schleifen (while, for) und Verzweigungen (if, else).
Inhalt
Grundlagen!
Arithmetische Operationen!
Zahlen (int, float)!
Logische Ausdrücke!
Zeichenketten (string)!
Variablen!
Programme nachträglich ändern - in neuem Fenster arbeiten!
Turtle !
Grundlagen!
Programmausführung!
Weiter mit Programmieren ohne Turtle!
Kontrollstrukturen (Schleifen und Verzweigungen)!
Fallunterscheidungen: if - else
Schleife: while
Schleife: for
Weitere nummerische Anwendung!
Weitere Anwendungen mit Turtle!
Pete Moor | IKT | Klasse 14r
3
3
4
4
5
5
5
6
6
7
8
8
9
9
11
11
12
2
Die Programmiersprache, mit der wir arbeiten werden, heisst 'Python'. Die Idee zur Entwicklung von Python lag in der guten Lesbarkeit des programmierten Textes. Programmieren heisst, einen
Text (Code) in einer Sprache zu schreiben, den der Computer versteht.
Python wurde im Jahre 1991 entwickelt. Sie ist
!
eine plattformunabhängige Programmiersprache (Unix, Windows, Mac OS X u.a.m.)
!
Wir verwenden eine etwas spezielle „Textverarbeitungsanwendung“ um in dieser Sprache zu
schreiben: Eine IDLE (Integrated Development
Environment), ein Programm, in welchem wir
den Text nicht nur schreiben, sondern ihn auch
gerade ausführen lassen können. Wir nenne ihn
Interpreter und können da Befehle eingeben
und diese sogleich ausführen lassen.
Grundlagen
Arithmetische Operationen
Aufgabe 1: Python öffnen und einfache Operationen durchführen
• Wählen Sie im Menü „Start“, „Programme“, „Programmieren“, „Python 2.5“, „IDLE (Python
GUI)“
• Geben Sie hinter ">>>" folgendes ein: 3 + 4. Drücken Sie dann die <Eingabetaste>.
• Probieren Sie weitere Operationen aus
Merke
Das ">>>"-Zeichen nennt man 'Prompt', hier werden die Programmier-Eingaben vorgenommen, die sogenannten Anweisungen.
Aufgabe 2: Verschiedene Operatoren testen
Testen Sie die folgenden Operatoren und notieren Sie deren Bedeutung in die folgende Tabelle
Operator Bedeutung
Operator
+
/
-
**
*
%
Pete Moor | IKT | Klasse 14r
Bedeutung
3
Merke
Ein Computer ist wirklich ein Rechner! Der Interpreter kann also wie ein Taschenrechner
Berechnungen vornehmen. Dabei werden von Python die gewohnten mathematischen
Rechengesetze angewandt und das erwartete Ergebnis ausgegeben.
Beispiel:
>>> ((21 - 3) * 9 + 8) / 4
42
Eine Besonderheit gibt es allerdings: dividiert man 6 durch 4 so gibt der Interpreter 1 aus.
>>> 6 / 4
1
Was ist los?
Aufgabe 3: Probieren Sie weitere Rechnungen aus und versuchen Sie zu verstehen, wo das
Problem liegt.
Zahlen (int, float)
Merke
Wir bewegen uns also im Zahlenraum der ganzen Zahlen int (integer). Möchten wir das
korrekte Resultat müssen Gleitkommazahlen float angezeigt werden. Die Angabe mit
Punkt (kein Komma) ist dabei notwendig:
>>> 6.0/4! oder: ! >>> int(1.75)!
1.5! !
1! !
oder: ! >>> float(2)
2.0
Logische Ausdrücke
Es ist möglich, Zahlen miteinander zu vergleichen:
>>> 3 < 4
True
Merke
Auf solche Vergleiche antwortet der Interpreter mit einem Wahrheitswert, also True oder
False.
Aufgabe 4: Welche Bedeutung haben die untenstehende Vergleichsoperatoren?
Operator Bedeutung
Operator
<
>=
>
>==<
<=
!=
Pete Moor | IKT | Klasse 14r
Bedeutung
4
Zeichenketten (string)
Eine Programmiersprache muss auch mit Texten umgehen können. Ein Stück Text heisst String und
muss in Python mit einfachen oder doppelten Anführungszeichen angegeben werden. Sie können
Texte immer auch mit Operatoren verknüpfen.
Aufgabe 5: Schreiben Sie 100 mal den folgenden Satz: „Kein facebook während dem IKT!“
Merke
Bei Fehlermeldungen erscheint ein roter Text, hier: Unsupported characters
input. Also ein nicht unterstützter Buchstabe; Python unterstützt keine Umlaute!
in
Was müssen Sie in Aufgabe 5 ändern? Hat es nun geklappt?
☞ Für Programmierer/-innen ist Faulheit ein Kompliment ;-)
Variablen
Von der Algebra her wissen Sie, dass man einer Variablen (Unbekannten) einen Namen geben kann.
Das ist beim Programmieren sehr nützlich. In Python können einer Zahl oder Zeichenkette Namen
gegeben werden:
>>> a=2
>>> a+3
5
Die mit den Namen verknüpfte Werte können später ausgegeben oder in Berechnungen verwendet
werden, indem der Name statt des Werts eingegeben wird:
>>> a="Hallo"
>>> b="Welt"
>>> a+" "+b
'Hallo Welt'
Programme nachträglich ändern - in neuem Fenster arbeiten
Sind die Programme länger und müssen abgeändert werden, so ist das im Interpreter nicht möglich.
Also schreiben wir künftig unseren Programmtext in eine Datei, welche dann abgespeichert, jederzeit wieder änderbar sind und ausgeführt werden können. Öffnen Sie dazu das Menü 'File', dann
'New Window'. Schreiben Sie hier Ihr Programm. Lassen Sie es über das Menü 'Run', dann 'Run
Module' laufen (oder F5). Sie müssen das Programm zuerst sichern.
Aufgabe 6: Ein Programm abändern
Erstellen Sie ein Programm, indem Sie 100 Mal "Ich heisse 'Vorname'" schreiben lassen:
print 100* "Ich heisse 'Vorname'" (print ist der Befehl für die Bildschirmausgabe)
Nun möchten Sie auch noch den Nachnamen schreiben lassen... (voilà der Vorteil!)
Pete Moor | IKT | Klasse 14r
5
Turtle
Bisher haben Sie einige Grundzüge des Programmierens kennengelernt. Jetzt sollen Sie weiter üben, doch nicht auf dem trockenen Textbildschirm wie bisher, sondern mit Hilfe der Grafik Turtle. Die Idee ist, dass Sie eine Schildkröte (turtle) mit
!
Hilfe Ihres Programms bewegen. Und das Schöne ist, dass die Turtle eine Spur hinterlässt – aber
sehen Sie selber.
Grundlagen
Schreiben Sie in ein neues Fenster from turtle import* und starten so das Modul Turtle.
Aufgabe 7: schreiben Sie das folgende Programm:
from turtle import*
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)
forward(100)
danach: F5 (run module) drücken und sichern, voilà: Das Turtlefenster (Turtle Graphics) öffnet sich und die Turtle (Pfeil) kriecht und zeichnet ihre Spur!
Merke
• Es kann sein, dass Sie das Turtlefenster ab und zu zurücksetzen müssen. So schreiben
sie im Programmfenster: reset()
• Sie können nun die Turtle beliebig auf dem Feld bewegen lassen. Dazu brauchen Sie
immer eine Anweisung (z.B. right) und einen spezifischen Wert in Klammer, z.B. (90).
Mit right (90) erfolgt also eine Rechtsdrehung um 90 Grad.
• Immer wenn Sie nach einer Anweisung die erste Klammer schreiben, werden Sie aufgefordert, einen Wert einzugeben und mit der zweiten Klammer zu quittieren.
Aufgabe 8: Freies Ausprobieren verschiedener Befehle
Bewegen Sie Turtle frei nach Lust und Laune, indem Sie die nebenstehenden Befehle anwenden. Zeichnen Sie z.B. ein gleichschenkliges Dreieck mit verschieden farbigen Seiten...
Tipps:
• 'up' und 'down' heben und senken die Turtle ohne Spur
• 'goto' erfordert die Koordinaten der x- und y-Achse (mit
Komma getrennt). Am Anfang ist die Turtle auf 0,0.
• Farben sind englisch, z.B. grün: color("green")
• auf folgender Website finden Sie detaillierte Informationen
zu den Befehlen und deren Werte:
www.michael-holzapfel.de/progs/python/python_turtle.htm
Pete Moor | IKT | Klasse 14r
forward(distanz)
left(winkel)
right(winkel)
up()
down()
goto(x,y)
color(farbe)
width(dicke)
reset()
fill(0: vor der Form,
1: nach der Form)
tracer(0=schnell,
1=langsam)
!
6
Aufgabe 9: Ein Schweizerkreuz zeichnen
Wir haben eingangs Programme zum Schweizerkreuz von Hand geschrieben. Realisieren
Sie jetzt ein Programm mit der Turtle.
Erstellen Sie auch ein Programm für 'H'. Können Sie die Figuren auch farbig gestalten?
Voilà, da muss schon recht viel programmiert werden und die Codes werden allmählich lang. Programmieren versucht natürlich genau hier auch rationell zu sein. Wir definieren also beispielsweise
vom Quadrat in Aufgabe 7 nur eine Seite und vervielfältigen diese viermal:
def Seite ():
forward(100)
right(90)
Seite()
Seite()
Seite()
Seite()
Merke
Der Begriff 'def' definiert eine Seite mit dem Wert (), der nach dem Doppelpunkt folgt.
Dann muss eingerückt sein, was 'Seite' definiert.
Am Schluss folgt die Operation, wie mit 'def' berechnet werden soll.
Aufgabe 10: Erstellen Sie anhand obiger Angaben einen möglichst kurzen Code für das
Zeichnen eines Schweizerkreuzes mit der Seitenlänge '100'.
Nicht immer sollen die Linien schwarz und dünn und der Inhalt weiss sein. Die Eigenschaften einer
Form (z.B. Strichdicke, Farbe, Länge, ...) nennt man Attribut. Es können also durchaus verschiedene
Argumente mit Werten definiert werden.
Aufgabe 11: Das Schweizerkreuz mit mehreren Attributen versehen
Lösen Sie die Aufgabe 10 mit mehreren Attributen:
roter Linie oder Liniendicke 20 oder Länge einer Linie 150 oder ....
Programmausführung
Das Programm, welches Sie in der Sprache Python schreiben, heisst Quelltext
(Datei mit der Endung .py). Der Prozesser des Computers versteht die Sprache
Python nicht, er versteht nur seine eigene Maschinensprache. Also muss ein
Übersetzungsprogramm diesen Quelltext in die Maschinensprache übersetzen
(Datei mit der Endung .pyc). Erst dann kann der Computer das Programm ausführen. Sehen Sie dazu die Abbildung rechts. Dabei braucht es in der Regel
einen Texteditor (lat. Erzeuger) in welchem Texte bearbeitet werden und einen
Compiler welcher das Programm so übersetzen, dass den Quellcode in die
'Maschinensprache' übersetzt, sowie ein Interpreter, der das Programm dann
ausführen lässt.
Beispiel: öffnen Sie eine Website, klicken Sie mit rechter Maustaste in Text. Voilà,
hier ist der Quellcode dieser Webseite. Hinter jedem Programm stecken Codes!
Pete Moor | IKT | Klasse 14r
7
Weiter mit Programmieren ohne Turtle
Merke
Sie können Texte in Ihre Programme schreiben, die nicht ausgeführt werden, sondern als
Bemerkungen/Notizen dienen. Schreiben Sie dazu jeweils vor der entsprechenden Zeile
das Zeichen #.
Aufgabe 12: Reproduzieren Sie zuerst das folgende Programm und ändern Sie es so, dass
die Berechnung der Kreisfläche und -umfang möglich wird (dabei können Sie die #-Zeilen
weglassen)
# Initialisierung (für das 'r' das Beispiel r=3)
pi=3.14
r=3
#Berechnung / Codeblock
Umfang=pi*2*r
Flaeche=pi*r**2
#Bildschirmausgabe:
print "Der Umfang betraegt: " ,Umfang, "cm"
print "Die Flaeche betraegt: " ,Flaeche, "cm2"
Ändern Sie nun das Programm so ab, dass (ohne die #-Bemerkungen zu schreiben) das
Kugelvolumen und die Kugeloberfläche berechnet wird.
Kugelvolumen: 4/3*π*r3, Kugeloberfläche: 4π*r2
Richtig spannend wird es natürlich erst, wenn Sie den Radius variabel eingeben können, das Programm Sie also für eine Einfabe auffordert. Dies lösen Sie, indem Sie r folgendermassen definieren:
r=input("Geben Sie den Radius in cm ein: ")
Merke
Durch den Befehl: input("....") ermöglicht also eine nummerische Eingabe. Möchten Sie
Text eingeben können, so schreiben Sie raw_input.
Aufgabe 13: Schreiben Sie das Programm so um, dass Sie aufgefordert werden, den Radius
einzugeben.
Aufgabe 14: Erstellen Sie ein kleines Programm, das Sie auffordert den Namen einzugeben
und Sie danach mit Ihrem Namen freundlich nach Ihrer Befindlichkeit fragt. Die Bildschirmausgabe sollte also sinngemäss so aussehen: Hallo Sabine, wie geht es Ihnen?
Kontrollstrukturen (Schleifen und Verzweigungen)
Unter einer Kontrollstruktur versteht man ein Konstrukt, mit dessen Hilfe sich der Ablauf eines Programms steuern lässt. Zwei wesentliche Kontrollstrukturen werden unterschieden:
• Verzweigungen (Fallunterscheidungen): hingegen knüpfen einen Codeblock an eine
Bedingung, so dass er nur ausgeführt wird, wenn die Bedingung erfüllt ist (if, else).
• Schleifen: dienen dazu, einen Codeblock mehrmals auszuführen (while, for).
Pete Moor | IKT | Klasse 14r
8
Fallunterscheidungen: if - else
Dieser
Code wird ausgeführt, wenn Be-
if Bedingung:
Anweisung
dingung True ergibt (wenn).
.
.
.
Der
Anweisung
Code wird nur dann ausgeführt,
else:
wenn alle Bedingungen False
Anweisung
.
ergeben (sonst).
.
.
Anweisung
wichtig: Doppelpunkte beachten
Beispiel:
a=3
b=5
x=3*(b-a)+4/a
if x<5:
print "x ist kleiner als 5"
else:
print "x ist grösser als 5"
Aufgabe 15: Erstellen Sie ein eigenes Programm zur Lösung einer arithmetischen Aufgabe.
Wie in Aufgabe 13 kann für eine Variable auch ein eigener Wert eingetragen werden.
Merke
if-else-Anweisungen können auch mit Strings (Zeichenketten) erstellt werden. Z.B.:
print "Kennst du das Zauberwort? "
print "wie heisst du?"
vorname =raw_input("Vorname:")
zauber = raw_input("Wie lautet das Zauberwort: ")
if (zauber == "Hokus Pokus"):
print vorname + ", du wirst zum Zaubermeister ernannt! "
else:
print "Falsch, du wirst verzaubert, " + vorname + "!"
Bemerkung: raw_input(„...“) braucht es bei Text (strings)!
Schleife: while
Die while-Schleife dient dazu, einen Codeblock so lange auszuführen, wie eine bestimmte Bedingung erfüllt ist. Grundsätzlich besteht eine while-Schleife aus einem Schleifenkopf, in dem die Bedingung steht, sowie einem Schleifenköper, der dem auszuführenden Codeblock entspricht.
Merke
Die Schleife läuft solange die Bedingung erfüllt ist und nicht bis sie erfüllt ist!
Aufgabe 16: Wir entwickeln jetzt ein längeres Programm. Wir wollen Zahlen in einem bestimmten Zahlenraum erraten. Schreiben Sie das untenstehende Programm (links) ab.
Eingabe
print "Gesucht ist
schen 0 und 100"
Pete Moor | IKT | Klasse 14r
Bereich
eine
Zahl
zwi- Bildschirmausgabe
Mit dem Schlüsselwort print
chenketten ausgegeben werden.
können Zei-
9
gesucht=39
geraten=0
Initialisierung
Variablen werden angelegt und mit Werten versehen. Die Zahl '0' ermöglicht den Start.
while geraten != gesucht:
Schleifenkopf
In einer Schleife werden so lange Zahlen vom
Benutzer gefordert, wie die gesuchte Zahl noch
nicht erraten ist.
geraten = input("Raten Sie:")
print "Bravo, genau richtig!"
Schleifenkörper
Der zur Schleife gehörige Block (hier nur eine
Zeile) wird durch seine Einrückung bestimmt.
Bildschirmausgabe
Also: Das Programm läuft so lange, bis geraten ≠ gesucht ist (!=)! Wenn geraten = gesucht: Bravo!
Aufgabe 17: Zahlen eingrenzen
Die Aufgabe 16 kann sehr lange dauern. Wir wollen so helfen, dass der User Informationen
erhält, ob die Zahl zu gross oder zu klein ist.
Tipp: if -else (im Schleifenkörper)
Weiter wäre es spannend zu wissen, wieviele Versuche man anwenden musste bis zur richtigen Lösung. Tipp: eine zusätzliche Initialisierung, die sich am Ende des Schleifenkörpers
immer um 1 erhöht. Initialisieren Sie z.B. i=0 und lassen Sie i jeweils am Ende des Schleifenkörpers um 1 steigern.
Merke
Man kann auch gegen den Computer spielen. from random import* lädt dann das
Modul, das Zufallszahlen ausgeben kann. Dabei bedeutet z.B. der nachfolgende Befehl
randint(1,100), dass der Computer eine Zufallszahl zwischen 1 und 100 wählt.
Aufgabe 18: Schreiben Sie ein Programm - analog der Aufgabe 17 - in welcher der Computer die gesuchte Zahl selber (per Zufallsprinzip) generiert.
Aufgabe 19: Der Computer spielt Yatzy
Sie kennen das Würfelspiel mit 5 Würfeln. Wie viele Versuche brauchen Sie, um mit einem
Mal alle Würfelzahlen gleich zu würfeln? Wir wollen das programmieren, doch beginnen wir
einfacher:
1. Programmieren Sie Python so, dass der Computer mit zwei Würfeln würfelt. Lassen Sie
die beiden Zahlen anzeigen (Würfel A: 3, Würfel B: 4).Wenn beide Augenzahlen gleich sind,
so erscheint die Meldung „Yatzy!“ und die Schleife soll stoppen (break), sonst „noch einmal
würfeln“.
• Hilfen: Schreiben Sie zuerst from random import*. So weiss der Computer, dass er nachher selber Werte bestimmen muss.
• Beginnen Sie den Schleifenkopf mit while True:
• Nun müssen Sie Würfel a und Würfel b bestimmen: randint(1,6)
• Um die Schleife nach der Meldung „Yatzy!“ zu stoppen verwenden Sie den Befehl break
Pete Moor | IKT | Klasse 14r
10
2. Wenn das Programm einwandfrei läuft, so ändern Sie das Programm so, dass der Computer mit 5 Würfeln würfelt. Achtung, das könnte länger gehen (ich brauchte bei einem
Durchgang 3646 Versuche!!!). Also, Programm ist auch mit 3 Würfeln reicht auch ...
3. Hat das auch geklappt, so wäre es spannend zu wissen, wie oft der Computer würfeln
musste für ein Yatzy. Jeder neue Versuch soll also zum alten hinzugezählt werden.
Hilfe: Anzahl Schleifen zählen, siehe Aufg. 17 (oben: anzahl=0; unten: anzahl=anzahl +1)
Schleife: for
Die for-Schleife kann im einfachsten Fall als Zählschleife verwendet werden. Sie ermöglicht dem
Programmierer also festzulegen, ob ein Codeblock erneut ausgeführt werden soll, so quasi mehrfache Schleifendurchläufe.
Struktur
Konkret
range-Verhalten
for Variable in Objekt:
Anweisung
.
.
.
Anweiung
for i in range (5):
print i
range (stop)
range (start, stop)
range (start, stop, step)
Zahlen 0 bis 4 werden ausgeschrieben.
for i in range (0, 10, 2) bedeutet also: Die Zählvariable i beginnt jetzt mit dem Wert 0, die Schleife
wird ausgeführt, solange i kleiner ist als 10, und in jedem Schleifendurchlauf wird i um 2 erhöht. Damit gibt die Schleife die Werte 0, 2, 4, 6 und 8 aus. Dabei wird der Wert stop nicht erreicht!
Aufgabe 20: negative for-Schleifen oder Strin in for-Schleifen (iterieren)
for-Schleifen können auch negativ sein. Veruschen Sie die Werte '40, 30, 20, 10, 0, -10, -20,
-30, -40' anzeigen zu lassen.
Weitere nummerische Anwendung
Aufgabe 21: Das Nim-Spiel verstehen
Spielregeln: Es liegen x Hölzchen auf dem Tisch. Zwei Spieler nehmen abwechselnd entweder 1, 2 oder 3 Hölzchen weg. Wer das letzte Hölzchen nimmt, hat verloren.
Wir wollen dieses Spiel gegen den Computer spielen. Öffnen Sie das Programm auf dem
Server 'bitte', spielen Sie es und lesen Sie den Code. Können Sie ihn nachvollziehen?
Pete Moor | IKT | Klasse 14r
11
Weitere Anwendungen mit Turtle
Aufgabe 22: Regelmässige Grafiken erzeugen
!
Versuchen Sie in Turtle durch Wiederholung einer definierten
Form (z.B. Seite und Winkel) regelmässige Grafiken wie
rechts zu erstellen.
Tipp 1: Durch abweichen von Winkelzahlen (85 statt 90)
ergeben sich bei den Quadraten leichte Verschiebungen.
Tipp: Wenn Sie nicht die ganze Zeit zusehen wollen können
Sie die Turtle beschleunigen: tracer (0) (vor dem eigentlichem Code)
Lustig kann auch das Arbeiten mit randint()sein es ist nun alles zufällig!
Aufgabe 23: Zeichnen Sie eine einfache Spirale
Denken Sie an an die Schleife for, mit welcher Sie die
Distanzen regelmässig verändern können.
Beginnen Sie mit:
a=0 (damit die Turtle ganz in der Mitte beginnt)
for i in range (...):
Aufgabe 24: Variieren Sie die einfache Spirale
von Aufgabe 23 so, dass tolle Ornamente entstehen.
Überlegen Sie, wo Sie ansetzen müssen, wenn
Sie eine Spirale regelmässig verschieben lassen
müssen: muss die Distanz verändert sein oder
der Winkel?
Pete Moor | IKT | Klasse 14r
12
Herunterladen