Programmieren lernen mit Python

Werbung
Programmieren lernen mit Python
Hack
Programmieren lernen
mit Python
Programmieren lernen mit Python
Idle
Idle ist eine einfache Programmierumgebung für Python, die aus zwei Teilen besteht:
•
Editor und Shell
Im Editor kann man Programme schreiben, in der Shell kann man verschiedene Dinge ausprobieren
– und damit fangen wir an:
Die Python-Shell meldet sich mit der Python-Version (hier 2.7.3). Nach der Eingabeaufforderung
(im Englischen: Prompt)
>>>
Kann der Programmierer etwas eingeben, hier war das: a = 5
Das bedeutet: Im Rechner wird in einen Speicherbereich mit dem Namen a die Zahl 5 geschrieben.
Das Gleichheitszeichen hat also eine andere Bedeutung wie in der Mathematik, es steht für eine
Wertzuweisung. Das Gleichheitszeichen nennt man auch Zuweisungsoperator.
Nachdem der Variablen b (Variable ist beim Programmieren gleichbedeutend mit Speicherbereich)
die Zahl 6 zugewiesen wurde, werden die Variablen a und b addiert und ausgegeben.
Nun wird den Variablen a und b eine Zeichenkette zugewiesen, d.h. die alten Werte gehen verloren,
die Variablen enthalten keine Zahlen mehr sondern Zeichenketten. Der Plus-Operator hat bei
Zeichenketten eine andere Wirkung als bei Zahlen, er fügt sie einfach zusammen.
Manchmal geht auch etwas schief. Im letzen Teil wird versucht, mit dem Plus-Operator eine
Zeichenkette (str steht für String) und eine Zahl (int steht für Integer, also „ganze Zahl“) zu
verbinden. Das muss natürlich schief gehen und Python meldet einen TypeError, d.h. die
verwendeten Datentypen Zahl und Zeichenkette können auf diese Weise nicht verarbeitet werden.
Die folgende Tabelle gibt dir einen Überblick über einfache Datentypen und Operatoren in Python.
Programmieren lernen mit Python
Operatoren
Arithmetische Operatoren
Operator
Beschreibung
Beispiele für a=2 b=5
+
Addition
a + b ➞ 7
-
Subtraktion
a - b ➞
*
Multiplikation
a * b ➞ 10
/
Division in Python 2.x mit zwei ganzen Zahlen,
und bei mindestens einer Kommazahl
b / a ➞ 2
b / 2.0 ➞ 2.5
/
Division in Python 3.x
b / a ➞ 2.5
%
Modulo- oder Restpoperator (5:2=2 Rest 1)
b % a ➞ 1
**
Potenzoperator
a**b ➞ 32
//
Ganzzahldivision (nur ab Python Version 3.x)
b//a ➞ 2
–3
Vergleichsoperatoren
Operator
Beschreibung
Beispiele für a=2 und b=5
==
Prüft, ob die Operanden gleich sind
a == b ➞ False
!=
Prüft, ob die Operanden ungleich sind
a != b ➞ True
<>
wie !=
a <> b ➞ True
>
Prüft, ob der linke Operand größer ist als der rechte
a > b ➞ False
>=
Wie oben, lässt aber Gleichheit zu
a >= b ➞ False
<
Prüft, ob der linke Operand kleiner ist als der rechte
a < b ➞ True
<=
Wie oben, lässt aber Gleichheit zu
a <= b ➞ True
Zuweisungsoperatoren
Operator
c
vorher
Beschreibung
a=2 und b=5
c
nacher
=
Weist die rechte Seite der linken zu
?
c = a + b
7
+=
Äquivalent zu
c = c + x
7
c += a
9
-=
Äquivalent zu
c = c - x
9
c -= b
4
*=
Äquivalent zu
c = c * x
4
c *= a
8
/=
Äquivalent zu
c = c / x
8
c /= a
4
%=
Äquivalent zu
c = c % x
8
c %= b
3
**=
Äquivalent zu
c = c ** x
3
c **= a
9
Logische Operatoren
Operator
Beschreibung
a
b
a and b
A or b
not a
and
Logisches UND
True
True
True
True
False
or
Logisches ODER
True
False
False
True
False
not
Logisches NICHT
False
True
False
True
True
False
False
False
False
True
Programmieren lernen mit Python
EVA
Jedes Programm verarbeitet Daten, dies von irgendwoher erhalten hat und gibt sie wieder aus. Das
ist das EVA-Prinzip:
•
•
•
Eingabe
Verarbeitung
Ausgabe
In einem Python-Programm sieht das so aus:
Programm:
Ausgabe:
Lesen und verstehen
•
Zeilen, die mit dem #-Zeichen beginnen sind Kommentare, sie haben keinen Einfluss auf
das Programm. Durch sie werden Ideen oder Verarbeitungsschritte umgangssprachlich
beschrieben, damit sie besser verständlich sind.
•
input ist eine Funktion. Funktionen haben nach ihrem Namen runde Klammern in denen
ihre Parameter stehen. Diese Funktion kann eine Zeichenkette als Parameter haben – muss
aber nicht. Parameter sind von Funktion zu Funktion verschieden und für den
Programmierer ist es wichtig, diese Parameter zu kennen um die Funktion korrekt
aufzurufen.
Ebenso wichtig ist die Kenntnis der sog. Rückgabewerte. Die Funktion input gibt einen
Zahlenwert zurück, der jeweils den Variablen a und b zugewiesen wird.
•
Die Verarbeitung der Eingabedaten ist hier die Bildung des Produkts, das der Variablen c
zugewiesen wird.
•
Die Ausgabe erfolgt schließlich mit print, wobei die Ausgabedaten durch Kommas
getrennt aufgezählt werden. Dies ist die Zeichenkette “Das Produkt ist“ sowie der
augenblickliche Wert der Variablen c.
Programmieren lernen mit Python
Nun geht’s ans Programmieren
Aller Anfang ist schwer! Gehe so vor:
1. Öffne IDLE, die Programmierumgebung von Python.
2. Wähle aus dem Menü: File – New Window
3. Schreibe das Programm.
4. Speichere es unter dem angegebenen Namen in „Eigene Dateien“ ab.
5. Starte es mit dem Menüpunkt: Run – Run Module
6. Sollten Fehler auftauchen: Korrigieren und mit Punkt 5 weiter machen.
Versuche folgende Programme zu schreiben, erzeuge dabei „sprechende“ Ausgaben. Speichere sie
unter den angegebenen Dateinamen ab. Wenn du nicht klar kommst, schau dir die Lösungen an und
schreibe sie ab. Aber versuche es bei jeder Aufgabe zunächst selbst.
1. grundrechenarten.py
Eingabe: 2 Zahlen a und b
Ausgabe: Summe, Differenz, Produkt, Quotient
2. F2C.py rechnet Grad Celsius in Grad Fahrenheit um.
celsius = (fahrenheit-32)*5/9
Beachte hierbei die Besonderheit der Division in Python 2.x (s. Operatoren)
3. C2F.py rechnet Grad Fahrenheit in Grad Celsius um.
4. hms2h.py rechnet Stunden, Minuten Sekunden in Stunden um.
5. kapital.py berechnet das Kapital K eines Grundbetrags G nach n Jahren bei einem
n
p
Zinssatz von p% mit der Formel K =G⋅ 1+
100
(
)
6. quader.py berechnet nach der Eingabe dreier Kantenlängen die Gesamtlänge der
Kanten, Oberfläche und Volumen.
7. Widerstand.py gibt den Gesamtwiderstand R der folgenden elektrischen Schaltung aus.
1
Parallelschaltung: R=
, Reihenschaltung: R= Ra + R b
1 1
+
R a Rb
Zusatzaufgaben:
8. Reste7.py zeigt, dass die Summe der 7er-Reste zweier Zahlen gleich dem 7er-Rest der
Summe der Zahlen ist und das selbe auch für das Produkt gilt.
9. Reste.py wie Reste7.py nur kein 7er-Rest: der Teiler wird angegeben!
10. h2hms.py rechnet Stunden in Stunden, Minuten Sekunden um.
Beispiel 2,8h = 2h 48min; 2.81 = 2h 48min 36sek
(Tipp: Benutze den %-Operator und die Funktion int(Zahl). Sie schneidet von einer
Kommazahl die Nachkommastellen ab und liefert eine ganze Zahl. )
Programmieren lernen mit Python
Lösungen
Programmieren lernen mit Python
Programmieren lernen mit Python
Programmieren lernen mit Python
Programmieren lernen mit Python
Selektion
Eine quadratische Gleichung kann keine, eine oder zwei Lösungen haben, je nachdem die
Diskriminante (das was unter der Wurzel steht) kleiner, gleich oder größer Null ist. Zur Planung des
Programms benutzen wir ein Struktogramm:
Python-Programm:
Als erstes wird das Modul math importiert, das die benötigte Wurzelfunktion sqrt (engl: square
root) enthält.
Diese if-elif-else -Konstruktion heißt Selektion, sie ermöglicht es, die eingerückten
Programmteile nur unter bestimmten Voraussetzungen auszuführen. Einrückungen werden nach
einem Doppelpunkt automatisch eingeleitet! Aus die reservierten Wörter if und elif (steht für
else if) folgen Bedingungen, der Teil nach else wird nur dann ausgeführt, wenn keine der
vorausgegangenen Bedingungen erfüllt war.
Programmieren lernen mit Python
Das folgende Syntaxdiagramm zeigt, dass in Python ein if-Statement mit if beginnt, beliebig viele
(auch keine) elif -Bedinungen folgen können, und dass höchstens ein else -Teil vorhanden sein
kann.
Bedingungen sind boolsche Ausdrücke, sie repräsentieren einen der Wahrheitswerte True oder
False. Ein if- oder elif-Block wird nur dann ausgeführt, wenn die Bedingung den boolschen
Wert True hat. Wahrheitswerte können mit den Operatoren not, and und or verknüpft werden.
Kommen mehrere Operatoren in einem Ausdruck vor ist die Rechenreihenfolge not vor and vor
or.
Aufgaben
1. BMI.py berechnet aus Körpergröße h in m und Gewicht G in kg den Body Mass Index
BMI = G/h2. Die Ausgabe ist der BMI und der Zusatz: Untergewicht für BMI <= 19,
Normalgewicht für 19 < BMI <=25, Übergewicht für BMI > 25.
(Anmerkung: Die Aussagekraft des BMI ist in der Medizin umstritten!)
2. Erweitere die vorhergehende Aufgabe um Adipositas (starkes Übergewicht)
für BMI > 30.
3. knobel.py soll bei einer Eingabe von „Schere – Stein – Papier“ der Spieler A und B den
Sieger ermitteln.
Hinweis: Die Eingabe von Zeichenketten wie „Schere“ erfolgt nicht mit
input(“Spieler A: “) sondern mit raw_input(“Spieler A: “).
Beachte auch den Fall einer unzulässigen Eingabe!
Programmieren lernen mit Python
4. Wechselgeld.py wechselt 2€- und 1€-Münzen in 50ct-Münzen, 50ct-Münzen in 10ctMünzen. Ansonsten gibt er die eingeworfene Münze zurück.
5. Rabatt.py ermittelt den Rabatt für einen gegebenen Rechnungsbetrag R nach folgender
Regel: R < 500€ kein Rabatt, 3% für 500€ <= R < 1000€, 5% für 1000€ <= R < 2000€ und
8% für R >= 2000€. Beispiel:
Rechnungsbetrag: 800
(Eingabe)
abzgl. 3% Rabatt = 776EUR
(Ausgabe)
6. Gleichung.py bestimmt für x die Lösungsmenge der Gleichung
a x=b .
7. Durch je drei der Größen Länge, Breite, Höhe und Volumen eines Quaders sind die übrigen
berechenbar. Im Programm quadermenue.py wird für die zu berechnenden Größen eine
0 eingegeben.
Zusatzaufgaben:
8. Ergänze in der vorhergehenden Aufgabe: Oberfläche!
9. Eine Zahl zwischen 1 und 100 soll mit Hilfe des Programms Zweier.py ins Zweiersystem
umgerechnet werden.
10. schnittpunkt.py berechnet den Schnittpunkt zweier Geraden (y = mx+c) falls sie
nicht parallel oder identisch sind.
Programmieren lernen mit Python
while-Schleifen
Es kommt oft vor, dass Programmteile mehrmals durchlaufen werden. Eine solche Konstruktion
nennt man Schleife. Das folgende Programm addiert alle Zahlen zwischen 1 und 100.
Eine Schleife besteht aus drei Teilen:
1. der Initialisierung, in der die Variable auf die Anfangswerte gesetzt werden.
2. Der Schleifenkopf prüft, ob die angegebene Bedingung zum Zutritt erfüllt ist.
3. Der Schleifenkörper enthält die zu wiederholenden Anweisungen.
Die Schleifensteuerung geschieht hier durch die Variable i, die vor der Schleife initialisiert wird.
Der Schleifenkopf wird durch das reservierte Wort while eingeleitet, gefolgt von einem boolschen
Ausdruck mit der Steuerungsvariablen, der einen Wahrheitswert true oder false liefert und dem
Doppelpunkt. Solange i kleiner oder gleich n ist werden die eingerückten Zeilen (der
Schleifenkörper) wiederholt. Da im Schleifenkörper die Variable i jeweils um 1 erhöht wird,
erreicht i irgendwann den Wert 101, worauf die Schleife verlassen wird und die Ausgabe erfolgt.
Würde i nicht erhöht werden, käme das Programm nie zum Halt. Aus diesem Grund erfordert die
Verwendung von Schleifen größte Sorgfalt bei der Programmierung.
Aufgaben:
1. a) Ändere das obige Programm schleife.py so ab, dass bei jedem Schritt die
Zwischensumme angegeben wird.
b) Ändere das obige Programm schleife.py so ab, dass bei jedem 10. Schritt die
Zwischensumme angegeben wird.
2
2. wertetabelle.py erzeugt eine Tabelle für die Funktion f ( x)=x ; x ∈{−10, ...9,10}
3. Eine Zahlenfolge beginnt dem Produkt aus deinem Geburtstag, Geburtsmonat und
Geburtsjahr. Ist die aktuelle Zahl gerade, wird sie halbiert ansonsten mit 3 multipliziert und
1 addiert. Die Folge ist zu Ende, wenn 1 erreicht ist. Beispiel: 20, 10, 5, 16, 8, 4, 2, 1.
a) zahlenfolgeA.py gibt die Zahlenfolge aus.
b) zahlenfolgeB.py gibt die größte vorkommende Zahl aus.
4. Das Programm rateDieZahl.py erzeugt durch die nachfolgenden Zeilen eine
Zufallszahl zwischen 1 und 1000
from random import *
z = randint(1,1000)
Nun fordert es den Benutzer auf, die Zahl zu erraten und antwortet auf eine Eingabe mit:
„Zu hoch“ oder „Zu niedrig“ solange bis es „Stimmt!“
Programmieren lernen mit Python
5. Das Programm rechentrainer.py erzeugt folgende Ausgabe aus dem großen 1mal1:
Rechentrainer
=============
Wie viele Aufgaben wünschen Sie? 2
Wie viel ist 3*13? 39
Richtig!
Wie viel ist 8*17? 163
Leider daneben!
Sie haben 50% der Aufgaben gelöst!
6. Das Programm summe.py ermöglicht so lange die Eingabe von Zahlen bis eine Null
eingegeben wird. Ausgabe ist dann die Summe der eingegebenen Zahlen.
7. Gemeinhin ist davon auszugehen, dass alle PKW nach dem ersten Jahr nach Neuzulassung
bei einer Fahrleistung von 15.000 Kilometern einen Wertverlust von 24,2% verzeichnen. Die
folgenden Jahre schlagen jeweils mit etwa 5,5 % zu Buche. Das Programm
wertverlust.py berechnet den Wert eines PKWs für die ersten 10 Jahre. Eingabe ist
der Neupreis.
Zusatzaufgaben
3
2
8. Für die Funktion f ( x)=x +4x −8x−10 existiert zwischen 2 und 3 eine Nullstelle. Das
Programm nullstelle.py liefert die Lösung.
9. Das Programm minmax.py sucht das absolute Minium und Maximum der o.g. Funktion
auf einem anzugebenden Intervall.
Programmieren lernen mit Python
Funktionen
Funktionen sind eigenständige Programmteile und werden deshalb auch als Unterprogramme
bezeichnet. An Funktionen können Variablen zur Verarbeitung übergeben werden. Funktionen
können auch Ergebnisse an das aufrufende Programm zurückgegeben. Ein einfaches Beispiel: Die
Funktion dreiecksflaeche soll den Flächeninhalt eines Dreiecks berechnen. Dazu wird die
Länge der Grundseite und die Höhe des Dreiecks benötigt. In Python sieht die Definition einer
Funktion so aus:
def dreiecksflaeche(g, h):
return 0.5*g*h
Aufgerufen wird diese Funktion so:
r = 5
s = 8
A = dreiecksflaeche(r, s)
In diesem Fall wird die Variable A mit 20 beschrieben.
Lokale und globale Variablen
Innerhalb von Unterprogrammen existiert in der Regel ein eigenständiger Speicherbereich. Damit
ist es möglich, Variablen zu verwenden, die nur während der Bearbeitung der Funktion existieren.
Sie werden als lokale Variablen bezeichnet. Sie können die selben Namen haben wie die des
Hauptprogramms. Die Änderung einer lokalen Variablen beeinflusst eine gleichnamige Variable im
Hauptprogramm nicht. Zwar können Unterprogramme auch auf Variablen des Hauptprogramms
zugreifen, wobei aber die Eigenständigkeit des Unterprogramms verloren geht. Deshalb wollen wir
davon ohne zwingenden Grund keinen Gebrauch machen.
Übergabeparameter
In Python beginnt die Deklaration einer Funktion mit dem reservierten Wort def anschließend
folgt der Funktionsname mit der Parameterliste (sie kann auch leer sein) in runden Klammern. Der
Aufruf der Funktion erfolgt mit ihrem Namen mit den Parametern als Konstante oder Variablen des
Hauptprogramms.
Rückgabewerte
Unterprogramme können (müssen aber nicht) Werte an das aufrufende Programm zurückgeben.
Rückgabewerte stehen im Unterprogramm unmittelbar nach dem reservierten Wort return,
dadurch wird eine sofortige Rückkehr zum aufrufenden Programm erzwungen. Rückgabewerte
werden wie im Beispiel oben einer Variablen zugewiesen.
Gültigkeitsbereich von Variablen
Variablen des Hauptprogramms sind globale Variablen. Sie können in Funktionen benutzt werden.
Wählt man gleiche Namen, wie im vorausgegangenen Programm die Variable i, wird ein neuer
Speicherbereich angelegt, so dass die gleichnamige Variable des Hauptprogramms nicht berührt
wird.
Programmieren lernen mit Python
Praxis
Funktionen sind eine wertvolle Hilfe zur Lösung eines schwierigen Problems. Es lässt leichter
lösen, wenn es gelingt daraus viele kleine Probleme zu machen. Unser großes Problem sei: „Gib
alle Primzahlen zwischen 1 und 1000 aus.“ Dazu muss man wissen, dass eine Primzahl genau zwei
Teiler hat. Da die 1 nur einen Teiler hat, ist die 1 keine Primzahl.
•
Erstes Teilproblem: „Bestimme die Anzahl der Teiler einer Zahl.
Hier muss für jede Zahl, die kleiner oder gleich der vorgegebenen Zahl ist, überprüft werden, ob sie
die vorgegebene Zahl teilt.
•
Zweites Teilproblem: Wann teilt eine Zahl a eine andere Zahl b? Dies lässt sich leicht durch
den in Python vorhandenen Restoperator ermitteln: a teilt b, wenn b%a == 0.
Zur besseren Strukturierung des Programms löst man Teilprobleme am besten durch das
Hinzufügen von neuen Funktionen. Die Funktion ist_primzahl deutet im Namen schon an,
dass man als Rückgabewert „ja“ oder „nein“ bzw. True oder False erwartet.
Der Funktionskopf enthält das reservierte Wort def, den Namen der Funktion und die
eingeklammerte Aufzählung der übergebenen Variablen und dem Doppelpunkt. Sobald das
reservierte Wort return aufgerufen wird, erfolgt die Rückkehr zum aufrufenden Programmteil.
Folgt auf return noch ein weiterer Ausdruck, so wird der aktuelle Wert dieses Ausdrucks
zurückgegeben.
Programmieren lernen mit Python
Aufgaben
In alle Programme sollen Funktionen eingebaut werden
1. Das Programm wertetabelle.py gibt eine Wertetabelle der Funktion
1 2
f ( x)= x −5 x+2 aus.
2
2. Das Programm quader.py fragt den Benutzer, ob es die Oberfläche, die Kantensumme
oder das Volumen eines Quaders berechnen soll und führt den Wunsch aus.
3. Das Programm schaltjahr.py findet heraus, ob ein angegebenes Jahr nach 1582 ein
Schaltjahr ist. Wird eine kleinere Jahreszahl angegeben lautest die Ausgabe: „Zu dieser Zeit
war der Gregorianische Kalender noch nicht gültig!“
Ein Schaltjahr liegt vor, wenn eine Jahreszahl durch 4 teilbar ist, aber nicht, wenn sie durch
100 teilbar ist, aber wohl wenn sie durch 400 teilbar ist. (1900 war kein Schaltjahr, 2000 war
eines)
4. Das Programm wochentage.py bestimmt für ein vorgegebenes Datum vom 1.1.2001 bis
zum 31.12.2100 den Wochentag. (der 1.1.2001 war ein Montag, s. auch Aufgabe 3)
5. Das Programm quersumme.py ermittelt die Quersumme einer natürlichen Zahl.
6. Seit 1968 tragen die Lokomotiven der DB computerlesbare Fahrzeugnummern. Sie bestehen
aus einer dreistelligen Baureihennummer, einer dreistelligen Ordnungsnummer und einer
durch einen Bindestrich abgesetzten Prüfziffer.
Das Programm pruefziffer.py berechnet für die angegebene Baureihen- und
Ordnungnummer die passende Prüfziffer.
Programmieren lernen mit Python
Zeichnen mit Python
Wie eine Schildkröte eine Spur im weichen Sand hinterlässt, zeichnet die Python-Schildkröte
(Turtle) Linien auf den Bildschirm. Die Turtle kann sich um einen bestimmten Winkel nach links
oder rechts drehen, vorwärts und rückwärts laufen und einiges mehr. Hier eine kurze Demo:
Aufgaben
Zeichne...
1. ein Quadrat mit der Seitenlänge 80.
2. ein regelmäßiges 3-, 5- , 6- und 8-Eck.
3. „Das Haus vom Nikolaus“.
4. zwei sich schneidende Strecken.
5. Ändere das nachfolgende Programm so, dass die Ausgabe ein 5-Eck-Ornament ist.
Herunterladen