Python
# encoding: utf-8
from __future__ import (print_function,
division,
unicode_literals,
absolute_import)
Einfachstes Beispiel:
print('Hello, World!')
Zum Vergleich: C++
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout << "Hello, World!" << endl;
return 0;
}
Python stellt bereit:
True, False
42
3.14
'Test'
oder "Test"
a = 2
b = 3
a + b
namen = ['foo', 'bar', 'baz']
namen[1]
zahlen = { 'eins': 1, 'zwei': 2, 'drei': 3 }
zahlen['zwei']
Variablennamen können auch überschrieben werden:
a = 42
b = a
a = 0
b
Es gibt:
+
, -
, *
**
(Potenzieren: 2**3 → 8)/
(3 / 2 → 1.5 mit __from__ future import division
)//
(3 // 2 → 1)%
(Divisionsrest)
[1, 2, 3] + [4, 5]
geben True
oder False
zurück
==
, !=
>
, <
, >=
, <=
'Test' == 42
and
, or
, not
, in
print('Hello!')
len([1, 2, 3, 4, 5])
from math import cos
cos(1.0)
Viele Funktionen können beliebig viele Argumente haben:
print(1, 2, 3, 4, 5)
Man kann auch sogenannte Keyword-Arguments übergeben:
print(1, 2, 3, sep=', ')
Objekte haben auch Funktionen (nennt man Methoden):
'foo bar baz'.split()
s = 'test'
s.upper()
In IPython kann man wie folgt auf die Dokumentation einer Funktion zugreifen:
print?
Ansonsten findet man ausführliche Erklärungen in der offiziellen Dokumentation.
Jede Zeile eines Python-Programms wird nacheinander durchlaufen.
Die Kontrollstrukturen erlauben mehr Kontrolle über den Ablauf.
# dies ist ein Kommentar
if 1 == 3:
# muss eingerückt werden, 4 spaces:
print('foo')
elif 1 == 2:
print('bar')
else:
print('baz')
while
-Schleifen: Wiederholen, solange ein bestimmter Ausdruck True
zurück gibti = 0
while i < 5:
print(i)
i += 1
for
-Schleifen: Wiederholen für jedes Element (z.B. einer Liste)for i in range(5):
print(i)
for i in range(2, 5):
print(i)
for i in range(10, 3, -1):
print(i)
def
def add(x, y):
z = x + y
return z
add(2, 2)
Man kann auch mehrere Werte zurückgeben:
def divide(x, y):
return x // y, x % y
n, rest = divide(5, 3)
print(n)
print(rest)
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
factorial(4)
import
In Python kann man Programme in einzelne Module portionieren.
Braucht man etwas aus einem anderen Modul, importiert man es:
import math
math.sin(math.pi)
from math import cos, pi
cos(2 * pi)
from math import *
log(e)
import math as m
m.exp(10)
Schauen wir mal, was alles in math
definiert wurde:
import math
dir(math)
Einzelne Python-Dateien (Endung .py) kann man als Module benutzten.
Liegt eine Datei test.py
im selben Ordner, so kann man import test
ausführen.
.py
python2 programm.py
Es folgt ein fertiges Python-Programm.
Speichert es als primes.py
ab und startet es aus dem Terminal mit python2 primes.py
.
# encoding: utf-8
from __future__ import (print_function,
division,
unicode_literals,
absolute_import)
def primes(max_num):
# Es werden nur Primzahlen kleiner max_num berechnet
is_prime = max_num * [True]
is_prime[0] = False
is_prime[1] = False
primes = []
# Sieb von Erathosthenes:
for i in range(2, max_num):
if is_prime[i]:
for j in range(2 * i, max_num, i):
# Alle Vielfachen sind keine Primzahl
is_prime[j] = False
primes.append(i)
return primes
print(primes(100))
Mit \
kann man in Strings besondere Anweisungen setzen:
'\n'
-> Zeilenumbruch'\t'
-> Tab'\\'
-> normales '\'
Wenn man viele '\'
schreiben muss (z.B. in LaTeX-Code), lohnt es sich diese Funktion auszuschalten:
print(r'\Huge\texttt{Python}')
Oft will man Werte oder andere Strings in einen String einsetzen.
Dafür stellt Python die format()
-Methode bereit:
'Erster Wert: {}, Zweiter Wert: {}'.format(42, 0)
Die {}
-Markierungen werden durch die Parameter von format()
ersetzt.
format()
hat viele fortgeschrittene Funktionen:
'Das Ergebnis ist {:.2f}'.format(3.2211421)
Mit Python 3 kann man standardmäßig beliebige Schriftzeichen in Strings verwenden (Umlaute!).
Bei Python 2 muss man eigentlich immer ein 'u'
vor einen String setzen, der sie enthalten muss.
Alternativ kann man from __future__ import unicode_literals
verwenden.
print(u'Hällo Wörld')
print('Hällo Wörld') # wir haben unicode_literals importiert