Python Einführung Monica Selva Soto Mathematisches Institut [email protected] 24 März 2009 Monica Selva Soto Python Einführung Übungen zur Numerik 1 Vorlesung Übungen Webseite: (Anmeldung, Übungsblätter) http://www.mi.uni-koeln.de/~mselva/numerik1.php Klausur: findet am 30.07.2009 statt. Voraussetzung für die Zulassung: 50 Prozent der Punkte in den Übungsblättern und in den praktischen Aufgaben. praktische Aufgaben werden alle 3 Wochen ins Netz gestellt, sind in Python zu bearbeiten, müssen in Teams (von 2 oder 3 Studenten) gelöst werden. Monica Selva Soto Python Einführung Warum Python? Python ist leicht zu erlernen, eine höhere Programmiersprache, frei verfügbar, mit den Bibliotheken numpy, scipy, matplotlib geeignet für Numerik. Monica Selva Soto Python Einführung Verfügbarkeit und Installation Windows Enthought Python und Easy Eclipse für Python Linux (Ubuntu) Python 2.5, scipy, numpy, matplotlib, Easy Eclipse für Python Datei ipy_profile_mcscipy.py von Übungen-Seite herunterladen und in Windows HOMEPATH/_ipython Linux HOMEPATH/.ipython speichern. Python starten: Windows Durch Right-Click auf ipython-Symbol Aufruf konfigurieren (der Ziel-Befehl mit -p mcscipy ergänzen) Linux ipython -pylab -p mcscipy Siehe http://www.mi.uni-koeln.de/~mselva/numerik1.php Monica Selva Soto Python Einführung ipython und Easy Eclipse In ipython kann man Befehle schreiben, z.B. Zuweisungen, arithmetische Operationen, ... Easy Eclipse benutzt man, um Skripte zu schreiben. Python enthält viele Module, wo nützliche Funktionen definiert werden. Um sie benutzen zu können, müssen sie (die Module) zuerst mittels der Funktion import eingebunden werden. Beispiele: pyplot und numpy from numpy import * from matplotlib.pyplot import figure, plot,\ show, title x = array([0,1,2,3,4,5,6,7,8,9]) y = x + 1 figure() plot(x,y) title(’Gerade y = x+1’) show() Monica Selva Soto Python Einführung Zahlen Zahlen können ganz, reell oder komplex sein. Arithmetische Operationen: +, - für Summe und Subtraktion *, / für Multiplikation und Division ** für Potenz // für ganze Division Beispiele a = 1; b = 10 a = 1.0; b = 10.0 c = 2+1j; c.real; c.imag a = b = c = 2 a,b = 1,2.0 a,b = b,a Monica Selva Soto Python Einführung Booleans Booleans können True oder False sein. Das Ergebnis logischer Operation ist ein Boolean logische Operationen: ==, !=, >, <, >=, <=, and, or, not Beispiele a = 1.0; b = 1; c = complex(1,0) a == b and b == c a == b == c d = -1 a == b > d Monica Selva Soto Python Einführung Strings Strings werden zwischen ’ ’, " " oder """ """ geschrieben. Mit """ kann man Strings schreiben, die sich über mehrere Zeile erstrecken. Operationen: + (Verkettung), * (Wiederholung) Beispiele s1 = ’a’ s2 = "b" s3 = s1 + s2 s3 = s3*4 s4 = """laengere Nachricht, ueber mehrere Zeilen""" Monica Selva Soto Python Einführung Listen und Tupel Eine Liste wird mit eckigen Klammern umrahmt. Ein Tupel wird mit runden Klammern umrahmt. Listen darf man verändern, Tupel nicht. Beispiele x = [1, 2, ’ab’, 3, 4] ’ab’ in x x[0] = 11 1 not in x del x[0] y = (1, 2, ’ab’, ’c’, 3, 4) y[0] = 11 Andere Funktionen für Listen (Tupel darf man nicht verändern): append, insert, del, len, ... Monica Selva Soto Python Einführung Slicing In Python werden die Elemente von Listen und Tupeln gemäß ihrer Reihenfolge mit einem Index von 0 bis n belegt. x[i]: (i+1)-te Element von x, x[0] bezeichnet das 1. Element von x. x[i:j]: der 1. Index gibt das 1. zu berücksichtigende Element an. Der 2. Index ist das erste nicht mehr zu berücksichtigende Element. Beispiele x = [1, 2, 3, ’a’, ’b’, ’c’] x[0] x[-1] x[1:3] = [11, 12] x[0:0] = [-3,-2,-1] x[0:0] = [[-3,-2,-1]] Monica Selva Soto Python Einführung Typumwandlungen Mittels str(), int(), long(), float(), bool(), list(), tuple() ist es möglich, den Datentyp einer Variable explizit zu ändern. Beispiele a = 2 print(a + " ist eine gerade Zahl") a = 2 print(str(a) + " ist eine gerade Zahl") Monica Selva Soto Python Einführung Variablen in Python Jedes Objekt in Python hat eine Identität, einen Typ und einen Wert. Die Identität eines Objekts ist der Ort im Hauptspeicher, auf den das Objekt zeigt. Sie lässt sich durch die Funktion id abfragen. Beispiele a = 2 id(a) b = a a is b Monica Selva Soto Python Einführung Veränderbare und unveränderbare Datentypen Bei unveränderbaren Datentypen (z.B. Zahlen) führt die Änderung einer Variable zu einer neuen Zuweisung. Bei veränderbaren Datentypen (z.B. Listen, arrays) wird bei der Änderung einer Variable das Objekt selbst geändert. Beispiele a = 2 b = a b = 2.0 Nach der letzen Zuweisung haben a und b unterschiedliche Identitäten. x = [1,2] y = x Nach der letzten Zuweisung haben x und y die gleiche Identität. Die folgende Zuweisung ändert auch den Wert des 1. Elements von x. y[0] = -1 Monica Selva Soto Python Einführung Copy Modul copy, deepcopy x = [1,2,3] y = x y[0] = -1 Nach der letzten Zuweisung ist x[0] auch -1. Dieses Problem kann man mit Hilfe der Funktionen copy, deepcopy vermeiden. from copy import copy z = copy(x) z[0] = -1 Monica Selva Soto Python Einführung Codeblöcke Verzweigungen z = float(raw_input("Geben Sie eine Zahl ")) z1 = z % 2 if (z1 == 0): print("z war eine gerade zahl") else: print("z war nicht eine gerade zahl") print z1 print z Monica Selva Soto Python Einführung Schleifen for zahlen = [1,2,3,4,5,6,7,8,9,10] summe = 0 for i in zahlen: summe = summe + i summe = 0 for i in range(1,11): summe = summe + i while i = 1 summe = 0 while i <= 10: summe = summe + i i += 1 Monica Selva Soto Python Einführung Funktionen Beispiel def meinesumme(N=10): summe = 0 for i in range(1,N+1): summe = summe + i return summe meinesumme() meinesumme(5) meinesumme(N=20) Monica Selva Soto Python Einführung Funktionen, Optionale Argumente Beispiel def meinesumme(Start,Stop,Step=1): summe = 0 for i in range(Start,Stop+1,Step): summe = summe + i return summe meinesumme(1,10) meinesumme(2,3) meinesumme(1,10,2) Monica Selva Soto Python Einführung Funktionen, Keyword-Argumente Beispiel def meinesumme(Start=1,Stop=10,Step=1): summe = 0 for i in range(Start,Stop+1,Step): summe = summe + i return summe meinesumme() meinesumme(Step=2) meinesumme(Start=2) meinesumme(2,Step=2) Monica Selva Soto Python Einführung run, reload, import Funktionen, Befehle kann man in eine .py Datei schreiben, z.B. bsp1.py. Mit run bsp1 oder execfile(’bsp1.py’) werden alle Befehle aufgerufen. Mit import bsp1 wird bsp1 als Modul interpretiert und alle Funktionen und Variabel, die da definiert sind, werden hochgeladen. Ändert man bsp1.py, muss man mittels reload(bsp1) alles nochmal hochladen. Monica Selva Soto Python Einführung Numpy Das Numpy-Package ermöglicht die Arbeit mit Matrizen und Vektoren. Vektoren und Matrizen b = array([3,2]) c = 2* b x = list(b) y = 2* x c und y sind nicht gleich! y enthält 4 Elemente, c nur zwei. A = array([[1,2],[2,0]]) x = solve(A,b) y = dot(A,x) norm(y-b) Andere nützliche Funktionen: zeros, ones, empty, shape Monica Selva Soto Python Einführung Matplotlib matplotlib enthält pyplot mit den Funktionen: figure, xlabel, ylabel, title, xlim, ylim, show, ... Beispiel from matplotlib.pyplot import * import numpy x = linspace(0,2*pi,100) y = sin(x) plot(x,y) title(’sin function’) show() Monica Selva Soto Python Einführung Matplotlib Weitere Beispiele from matplotlib.pyplot import * import numpy x = linspace(0,2*pi,100) y = sin(.2*x) z = sin(2.0*x) plot(x,y,label=’.2’) plot(x,z,label=’2’) legend() show() Monica Selva Soto Python Einführung