Basiert auf "Introduction to Python programming" von J.R. Johansson (CC-BY). Anpassungen und Übersetzung durch mich (unter CC-BY).
Original verfügbar unter http://github.com/jrjohansson/scientific-python-lectures.
Jupyter-Notebooks erlauben es, Code und Erläuerungen zu kombinieren.
Für Code gibt es Code-Zellen. Code kann mit "Strg+Enter" ausgeführt werden und das Ergebnis erscheint direkt darunter.
Probieren Sie es aus:
1 + 23
Neue Codezeilen können mit "Alt+Enter" hinzugefügt werden.
Probiere Sie es aus:
# Erzeuge mir einen Freund mit Alt+Enter
# dd: Zelle löschen
Die Operatoren in Python funktionieren wie bei einem grafischen Taschenrechner. Auch Rechenregeln wie Punkt-Vor-Strich werden berücksichtigt:
+
-
*
/
, //
(Ganzzahldivision),%
**
1 + 2
1 - 2
3 / 2
3 // 2
5 % 2
(3 + 2) ** 3
Die boolschen Operatoren sind and
, not
und or
.
True and False
False and False
True and True
False or True
not True
# 0 False
# != 0 True
3 and 0
Vergleichsoperatoren ähnlich wie bei SQL:
>
, <
>=
(größer oder gleich)<=
(kleiner oder gleich)==
Gleichheit (doppelt, ein einzelnes = ist eine Zuweisung)!=
Ungleichheit2 > 1
2 < 1
1.9999 <= 1 + 1
5 == 4
5 != 4
Variablenamen dürfen a-z
, A-Z
, 0-9
und einige Sonderzeichen (_
) enthalten. Variablennamen dürfen nicht mit einer Zahl beginnen.
In Python gibt es reservierte Schlüsselwörter. Diese können nicht als Variablennamen verwendet werden. Dazu gehören u.a.
and, as, assert, break, class, continue, def, del, elif, else, except,
exec, finally, for, from, global, if, import, in, is, lambda, not, or,
pass, print, raise, return, try, while, with, yield
abc = 1
_def = 2
_and = 3
print(abc, _def, _and)
Zuweisungen werden in Python mit dem =
-Operator gemacht.
Python ist eine dynamisch typisierte Sprache, d.h. der Typ einer Variablen musst nicht angeben werden.
Das Zuweisen eines Wertes an eine neue Variable erzeugt die Variable:
x = 1.0
type(x)
Obwohl nicht angegeben, hat jede Variable einen expliziten Typ. Dieser ergibt sich aus dem Wert, der ihr zugewiesen wurde.
y = 3
type(y)
Mittels Neuzuweisung kann der Typ geändert werden:
x = y
print(x, type(x))
Der Zugriff auf unbekannte Variablen erzeugteinen NameError
:
print(x + z)
# Ganzzahl (Integer)
x = 1
x = 1.0 # Float
b1 = True
b2 = False
type(b1)
Mit einem Cast kann der Typ von Variablen geändert werden.
x = 1.9
type(x)
y = int(x)
print(y, type(y))
bool(0)
In Strings werden Texte abgespeichert.
s = "Hallo Welt"
print(s, type(s))
print(s)
Die Länge von Strings (Zeichenanzahl) kann mit der integrierten Funktion len
bestimmt werden.
len(s)
Mit []
kann ein einzelnes Zeichen extrahiert werden (das 1. Zeichen ist bei Index 0):
s[0]
s[6]
Beim extrahieren können auch Bereiche (Slices) angegeben werden.
Die Syntax ist [start:stop]
. Dabei bekommt man alle Zeichen ab start
bis ein Zeichen vor stop
.
s[1:5]
Wenn der Start oder das Ende weggelassen werden, wird immer das erste bzw. letzte Zeichen als Position angenommen.
s[:5]
s[0:5]
s[6:]
Typumwandlungen funktionieren auch zwischen Zahlen und Strings
str(123)
int("123")
int("abc")
Text kann mit der print
Funktion ausgegeben werden.
s = "Hallo"
i = 1
print(s, i)
print(s, i, "Welt")
Strings können mit plus kombiniert werden:
"Hallo " + i + " Welt"
"Hallo " + str(i) + " Welt"
"Hallo " + "1" + " Welt"
"Hallo " + "i"
f-Strings sind aber schöner. Nicht-Strings werden sogar automatisch umgewandelt:
f"Hallo {i} Welt"
f"{s} {i+100} Welt"
f"s {i+100} Welt"
"ABc".lower()
Listen unterstüzen die Selben Funktionen wie Strings (len
und Slicing), können aber beliebige Datentypen enthalten, nicht nur Zeichen.
l = [1,2,3,4]
l
len(l)
Das slicen funktioniert exakt wie bei Strings:
print(l[1])
print(l[2:])
print(l[0:2])
Listenelemente können verschiedene Datentypen enthalten:
m = [1, "a", 3.0]
m
Mit der eingebauten range
-Funktion können Listen aus Zahlenreihen generiert werden:
n = list(range(0, 20, 1))
print(n)
Durch eine Zuweisung können einzelnes Listenelemente ersetzt werden:
n[1] = "A"
print(n)
Mit der eingebauten del
-Funktion können einzelne Listenelemente gelöscht werden:
del n[0]
print(n)
Tupel sind quasi wie Listen, können aber nach der Erstellung nicht mehr modifiziert werden.
punkt = (10, 20) # Tupel
punkt2 = [10, 20] # Liste
punkt[0] = 0
Tupel können entpackt werden:
x, y = punkt
print(x, y)
x, y = punkt2
print(x, y)
Dictionaries bilden einen eindeutige Schlüssel auf einen Wert ab {key1 : value1, ...}
:
params = {"name": "Hans", "alter": 20, "ort": "Mittweida"}
params
[params, params]
Zugriff funktioniert mit eckigen Klammern. In diese muss der Schlüssel geschrieben werden:
params["name"]
params["xxx"]
params["name"] = "Paul"
params
del params["name"]
params
Die Keywords für bedinge Ausführung lauten in Python if
, elif
(else if), else
:
x = False
y = True
if x:
print("x ist wahr")
elif y:
print("y ist wahr")
print("bla")
else:
print("nix is wahr")
print("immer ausgeben")
In Python wird ein Codeblocks durch die Einrückungsebene definiert (normalerweise ein Tabulator oder vier Leerzeichen). Das bedeutet, dass der Code korrekt eingerückt sein muss, da es sonst Syntaxfehler gibt.