Zum Inhalt springen

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