# basictypes

# Grundlegende Datentypen und Operationen¶

## Numerische Typen¶

In [ ]:

    # Ganzzahlen (Integers)

    a = 42
    b = 23
    c = 0x20
    d = 0b1110101
    #e = calculate()
    f = 1_000_000
    print(a)
    print(b)
    print(a + b)
    print(a - b)

    42
    23
    65
    19

In [ ]:

    # Fließkommazahlen (Floats)

    pi = 3.14159
    e = 2.71828
    print(pi)
    print(type(pi))
    print(e)
    x = pi * e
    print(x)
    print(type(x))

    3.14159
    <class 'float'>
    2.71828
    8.539721265199999
    <class 'float'>

In [ ]:

    # Implizite Umwandlung von numerischen Typen

    i = 3
    f = 1.5
    summe = i + f
    print(i, f, summe)
    print(type(summe))
    print(type(e))
    z = 1
    n = 6
    print(z / n)

    3 1.5 4.5
    <class 'float'>
    <class 'float'>
    0.16666666666666666

In [ ]:

    # Grundrechenarten

    # Integer
    print(1 + 1)
    print(1_000 - 1)
    print(12 * 12)  # Vorsicht: Asterisk ("Sternchen"), nicht x)
    print(64 / 8)

    # Floats
    print(0.5 + 3.3)
    print(1.99 - 0.99)
    print(20.0 * 1.19)
    print(1.0 / 3.0)

    2
    999
    144
    8.0
    3.8
    1.0
    23.799999999999997
    0.3333333333333333

In [ ]:

    # X hoch Y

    x = 8
    x2 = x ** 2
    print(x2)
    print(x ** 3)
    print(pow(x, 3))

    print(x ** e)
    print(pow(x, e))   # pow akzeptiert integer und floats

    64
    512
    512
    285.0043245227213
    285.0043245227213

In [ ]:

    # Modulo

    x = 10
    y = 3
    rest = x % 3
    print(rest)
    print(type(rest))
    f = 1.2345
    i = int(f)
    print(f, i)
    print(f % 1)
    print(int(-2.3456))
    print(round(2.3455, 2))
    import math
    print(math.floor(2.345))

    1
    <class 'int'>
    1.2345 1
    0.23449999999999993
    -2
    2.35
    2

# Strings¶

In [ ]:

    s = "Dies ist ein String!"
    print(s)
    s2 = 'Man kann einfache oder doppelte Anführungszeichen verwenden.'
    print(s2)
    s3a = 'Innerhalb der Anführungszeichen kann man den jeweils "anderen Typ" verwenden'
    print(s3a)
    s3b = "Oder 'andersherum'."
    print(s3b)
    s4 = "Alternativ kann man eine Backslash \'als\' \"Escape\"-Zeichen verwenden"
    print(s4)
    s5 = "String-Literale" ", die direkt hintereinander" ", durch Leerzeichen getrennt, stehen" "werden zusammengefügt."
    print(s5)
    s6 = ("Mit Klammerung klappt das auch "
          "über mehrere Zeilen "
          "hinweg")
    print(s6)
    l = [
        "joe",
        "bob",
        "alice",
        "jenny"
    ]
    print(l)
    print(l)
    print(l)
    print(l)

    Dies ist ein String!
    Man kann einfache oder doppelte Anführungszeichen verwenden.
    Innerhalb der Anführungszeichen kann man den jeweils "anderen Typ" verwenden
    Oder 'andersherum'.
    Alternativ kann man eine Backslash 'als' "Escape"-Zeichen verwenden
    String-Literale, die direkt hintereinander, durch Leerzeichen getrennt, stehenwerden zusammengefügt.
    Mit Klammerung klappt das auch über mehrere Zeilen hinweg
    ['joe', 'bob', 'alice', 'jenny']
    ['joe', 'bob', 'alice', 'jenny']
    ['joe', 'bob', 'alice', 'jenny']
    ['joe', 'bob', 'alice', 'jenny']

In [ ]:

    # Längere Strings

    long_string = '''Dies ist ein langer String ("triple quoted string").
    Er kann Zeilenumbrüche enthalten.

    Und Leerzeilen.

    Und auch 'einfache' oder "doppelte" Anführungszeichen.

    Er endet mit drei weiteren Anführungszeichen des gleichen Typs.
    '''
    print(long_string)
    print(repr(long_string))
    s = 'Dies ist ein langer String ("triple quoted string").\nEr kann Zeilenumbrüche enthalten.\n\nUnd Leerzeilen.\n\nUnd auch \'einfache\' oder "doppelte" Anführungszeichen.\n\nEr endet mit drei weiteren Anführungszeichen des gleichen Typs.\n'

    Dies ist ein langer String ("triple quoted string").
    Er kann Zeilenumbrüche enthalten.

    Und Leerzeilen.

    Und auch 'einfache' oder "doppelte" Anführungszeichen.

    Er endet mit drei weiteren Anführungszeichen des gleichen Typs.

    'Dies ist ein langer String ("triple quoted string").\nEr kann Zeilenumbrüche enthalten.\n\nUnd Leerzeilen.\n\nUnd auch \'einfache\' oder "doppelte" Anführungszeichen.\n\nEr endet mit drei weiteren Anführungszeichen des gleichen Typs.\n'

In [ ]:

    # Escape Sequenzen

    # Zeilenumbrüche und Tabs
    print("Erste Zeile\r\nZweite Zeile")  # Zeilenumbruch nach Windows-Art
    print("Eine Zeile\nNoch eine Zeile")  # Rest der Welt ;-)
    print("Eins\tZwei\tDrei")
    print("1\t2\t3")

    # Null und Hexadezimal- und Unicode-Sequenzen
    print(repr("Dieser String enthält ein\0Null-Zeichen"))
    print("Hexadezimal-Codes können wir druckbare (e.g. '\x40') und nicht druckbare Zeichen (e.g. \x7F) verwendet werden.")
    print('\u2764')  # Unicode

    Erste Zeile
    Zweite Zeile
    Eine Zeile
    Noch eine Zeile
    Eins	Zwei	Drei
    1	2	3
    'Dieser String enthält ein\x00Null-Zeichen'
    Hexadezimal-Codes können wir druckbare (e.g. '@') und nicht druckbare Zeichen (e.g. ) verwendet werden.
    ❤

In [ ]:

    # String-Operationen

    s1 = "Dies ist der erste String."
    s2 = "Und dies der zweite."
    s3 = s1 + s2
    print(s3)
    s4 = "Ich habe es dir schon dreimal gesagt! "
    print(s4 * 3)

    Dies ist der erste String.Und dies der zweite.
    Ich habe es dir schon dreimal gesagt! Ich habe es dir schon dreimal gesagt! Ich habe es dir schon dreimal gesagt!

In [ ]:

    klein = "schrei nicht so laut!"
    print(klein.upper())
    print("hallo" == "HALLO".lower())
    print("hallo" == "Hallo".lower())
    print("straße".upper() == "STRASSE")

    SCHREI NICHT SO LAUT!
    True
    True
    True

In [ ]:

    hallo = "Hallo"
    print(hallo)
    print(hallo[1])
    hello = hallo[0] + 'e' + hallo[2:]
    print(hello)
    print("hello" * 3)

    Hallo
    a
    Hello
    hellohellohello

In [ ]:

    # Aber das geht nicht!:

    hallo[1] = 'e'

    # Strings sind immutable!

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    /home/chris/work/python-kurs-softed/notebooks/basictypes.ipynb Cell 16 line 3
          <a href='vscode-notebook-cell:/home/chris/work/python-kurs-softed/notebooks/basictypes.ipynb#X21sZmlsZQ%3D%3D?line=0'>1</a> # Aber das geht nicht!:
    ----> <a href='vscode-notebook-cell:/home/chris/work/python-kurs-softed/notebooks/basictypes.ipynb#X21sZmlsZQ%3D%3D?line=2'>3</a> hallo[1] = 'e'
          <a href='vscode-notebook-cell:/home/chris/work/python-kurs-softed/notebooks/basictypes.ipynb#X21sZmlsZQ%3D%3D?line=4'>5</a> # Strings sind immutable!

    TypeError: 'str' object does not support item assignment

In [ ]:

    i = 3.141
    i: int = 42