Python Grundlagen

Installation der folgenden Anwendungen

Anaconda starten:

Jupyter starten:

Ein neues Jupyter Notebook erstellen:

Python Grundlagen
In [1]:
# Ausgabe
print("Hello World!")
Hello World!
In [57]:
# 3 hoch 2 und danach in String umwandeln
x = str(3**2)
In [55]:
# Zurück nach float umwandeln
float(x)
Out[55]:
4.5
In [67]:
# [:5] = die ersten 5
# [5:6] = zwischen 5 und 6
# [len(y)-1] = vom gesamten String den letzten Buchstaben
# [11:] = der Buchstabe nach dem 11ten Buchstaben
y = "Hello World!"
y[:5]+y[5:6]+y[len(y)-1]+y[11:]
Out[67]:
'Hello !!'
In [98]:
# String anhand der Leerzeichen trennen und in einer Liste umwandeln
liste = "A B C D E".split(" ")
print(liste)
['A', 'B', 'C', 'D', 'E']
In [103]:
# Den ersten Buchastaben austauschen
liste[0] = "x"
# Liste erweitern | pop() würde den letzten Eintrag wieder löschen
liste.append("F")
# Liste als String zusammensetzen
myString = "_".join(liste)
print(myString)
x_B_C_D_E_F_F_F_F
In [104]:
print("C" in myString)
True
In [106]:
# Überprüfung auf Gleichheit
a = "a"
b = "b"
a == b
Out[106]:
False
In [120]:
# hash map
myMap = {"a":1, "b":2}
myMap["b"]
Out[120]:
2
In [124]:
print(myMap.get("a"))
1
In [121]:
# hash map - Reihenfolge wird random gespeichert
myMap["b"] = myMap["b"]+1
print(myMap)
{'a': 1, 'b': 3}
In [133]:
# hash map erweitern
m = {"c":4}
myMap.update(m)
print(myMap)
{'a': 1, 'b': 3, 'c': 4}
In [134]:
# b löschen
myMap.pop("b")
Out[134]:
3
In [139]:
# Kommaseparierte Werte mit Tupel
# Ein Tupel lässt sich nicht mehr verändern (immutable)
a = (1,2,3,4,5,6)
print(a)
# a an der Stelle 5 ausgeben
print(a[5])
(1, 2, 3, 4, 5, 6)
6
In [142]:
# if / else
a = 100
if a < 2:
    print("a kleiner 2")
else:
    print("a größer 2")
a größer 2
In [143]:
liste = ["a", "b", "c"]
for x in liste:
    print(x)
a
b
c
In [144]:
liste = ["a", "b", "c"]
for x in liste:
    if x != "b":
        print(x)
a
c
In [27]:
# List Comprehensions
liste = [1, 2, 3, 4, 5]
liste2 = [wert*5 for wert in liste]
print(liste2)
[5, 10, 15, 20, 25]
In [29]:
# List Comprehensions + Filter
liste = [1, 2, 3, 4, 5]
liste2 = [wert*5 for wert in liste if wert ==2]
print(liste2)
[10]
In [124]:
# Exception handling
# https://docs.python.org/3.7/library/exceptions.html#IndexError
liste = [1, 2, 3, 4, 5]
try:
    print(liste[6])
except:
    print("IndexError!")
IndexError!
In [23]:
# break & continue
liste = ["a", "b", "c", "d", "e"]
for x in liste:
    print(x)
    if x == "b":
        break
    
a
b
In [146]:
# Iteration über keys
myMap = {"a":1, "b":2}
for x in myMap:
    print(x)
a
b
In [133]:
# Set erlaubt immer nur ein Element vom gleichen Type
mySet = {"a", "a", "c", "d", "e"}
print(mySet)
print("e" in mySet)

# Welcher Wert ist in beiden Sets zu finden
mySet2 = {"a", "x"}
print(mySet & mySet2)

# Alle Werte, die nicht in beiden Sets vorkommen 
print(mySet ^ mySet2)

# Set erweitern
mySet.add("f")
print("f" in mySet)

# "f" aus set wieder löschen
mySet.remove("f")
print("f" in mySet)
{'e', 'd', 'c', 'a'}
True
{'a'}
{'d', 'c', 'e', 'x'}
True
False
In [163]:
# Tupel Ausgabe
print(myMap.items())
for x in myMap.items():
    (key, value) = x
    print(value)
dict_items([('a', 1), ('b', 2)])
1
2
In [162]:
for key, value in myMap.items():
    print(key)
a
b
In [164]:
for i in range(1, 3):
    print(i)
1
2
In [166]:
# Jede zweite Stelle ausgeben
for i in range(1, 10, 2):
    print(i)
1
3
5
7
9
In [172]:
# Runter zählen
for i in range(3, 0, -1):
    print(i)
3
2
1
In [13]:
x = 10
while x>8:
    x-=1
    print(x)
9
8
In [44]:
# Funktion + Schleife 5x Durchlaufen, falls counter Parameter nicht übergeben wird
def myFunction(zeichenkette, counter=5):
    for i in range(0, counter):
        print(zeichenkette + str(counter))

myFunction("Function", 2)
Function2
Function2
In [10]:
# Dokumentation: innerhalb der Funktion statt außerhalb
def myFunction(zeichenkette, counter=5):
    """Beschreibung der Function   
    Args:
        counter: beschreibung.
    Returns:
        Beschreibung des Rückgabewertes.
    """
    for i in range(0, counter):
        print(zeichenkette + str(counter))

help(myFunction)
Help on function myFunction in module __main__:

myFunction(zeichenkette, counter=5)
    Beschreibung der Function   
    Args:
        counter: beschreibung.
    Returns:
        Beschreibung des Rückgabewertes.

In [53]:
# Paramater & Function übergeben
def myFunction(a="a", b="b", c="c"):
    print(a+" "+b+" "+c)
    
def f():
    return "X"

myFunction(b=f())
a X c
In [114]:
# Pass by reference
x = 'x'

liste1 = []
liste1.append(x)

liste2 = liste1
liste2.append('y')

x = 'z'

print(x, liste1, liste2)
z ['x', 'y'] ['x', 'y']
In [70]:
# Lambda function Parameter x & y übergeben

# def f(x, y):
# return x*y

f = lambda x, y: x*y
    
f(2,3)
Out[70]:
6
In [79]:
# Lambda Funktion auf jedes Listenelement anwenden
f = lambda x: x*2
liste = [1, 2, 3, 4, 5]
# list iteriert durch die map und schreibt die Werte in list bzw. x
x = list(map(f, liste))
print(x)
[2, 4, 6, 8, 10]
In [95]:
# Klasse, private Variable u. private Funktion
class Mensch:
    # constructor
    def __init__(self, cm):
        self.__hoehe = cm
        print("Sprunghöhe constructor: "+str(cm))
            
    def springen(self):
        print("Sprunghöhe function: "+str(self.__hoehe))
        
    def upgrade(self):
        self.__hoehe = self.__hoehe
        
    def __privateUpgrade(self):
        print("Private Funktion")

# constructor Aufruf        
mann = Mensch(1.50)
mann.__hoehe = 1.70
mann.upgrade()
mann.springen()
Sprunghöhe constructor: 1.5
Sprunghöhe function: 1.5
In [109]:
# Vererbung
class Mensch:
    def kannSpringen(self):
        print("kann springen")

class Mann(Mensch):
    def kannSitzen(self):
        print("kann sitzen")

obj = Mann()
obj.kannSpringen()
print(type(obj))
print(type(obj) == Mensch)
isinstance(obj, Mensch)
kann springen
<class '__main__.Mann'>
False
Out[109]:
True