# 3. Vorlesung¶

### Einfache Zählschleife¶

In [2]:

    # Als While Loop
    count = 1 # Zählvariable
    while count < 4: # Bedingung
        print(count)
        count += 1 # Hochzählen

    1
    2
    3

In [4]:

    # Als For Loop
    for count in [1, 2, 3]:
        print(count)

    1
    2
    3

Beispiel einer Zählschleife in C:

    for (int i = 0; i < 4, i++) {}

In [2]:

    # Zählschleife mittels range Funktion
    for count in range(1,4):
        print(count)

    1
    2
    3

`range` kann bis zu 3 Parameter nehmen.

- 1 Parameter `range(4)` -> Zählt in 1er Schritten bis exklusive der eingegebenen Zahl 0,1,2,3

Der folgend genutzte Stern `*` sagt Python er soll den `iterator` entpacken.

In [4]:

    print(*range(4))

    0 1 2 3

- 2 Parameter `range(1,4)` -> Zählt in 1er Schritten von dem ersten Parameter bis exklusiv zum zweiten Parameter 1,2,3

In [5]:

    print(*range(1,4))

    1 2 3

- 3 Parameter `range(1,11,2)` -> Zählt in `2`er Schritten von dem ersten Parameter bis exklusiv zum zweiten Parameter

In [6]:

    print(*range(1,11,2))

    1 3 5 7 9

`For-Loops` itertieren über Iteratoren. Listen sind z.b. Iteratoren.

In [7]:

    l = [0, 1, 2, 3, 4]
    l

Out[7]:

    [0, 1, 2, 3, 4]

In [8]:

    for el in l:
        print(el)

    0
    1
    2
    3
    4

In [9]:

    len(l) # Anzahl 'Länge' der Liste l

Out[9]:

    5

In [10]:

    # range zählt bis 'exklusive' seines Eingabeparameters um folgendes verhalten zu emulieren
    for i in range(len(l)):
        print(i)

    0
    1
    2
    3
    4

In [11]:

    # Iteration über die Indexe der Liste
    for i in range(len(l)):
        print(l[i]) # Zugriff über Index auf die Elemente der Liste

    0
    1
    2
    3
    4

In [12]:

    # _ wird verwendet für Loops die einfach etwas immer und immer wiederholen sollen
    for _ in range(6):
        print("Hello")

    Hello
    Hello
    Hello
    Hello
    Hello
    Hello

Folgende Dict beispiele Eklären sich dementsprechend selber

In [13]:

    d = {"a": 5, "b": 8, "c": 10}
    d

Out[13]:

    {'a': 5, 'b': 8, 'c': 10}

In [14]:

    d.values()

Out[14]:

    dict_values([5, 8, 10])

In [15]:

    for el in d.values():
        print(f"Wert: {el}")

    Wert: 5
    Wert: 8
    Wert: 10

In [16]:

    for key in d.keys():
        print(f"Key: {key}")

    Key: a
    Key: b
    Key: c

In [17]:

    # Items gibt eine Liste mit tupeln zurück, jedes tuple wird in seine Elemente zerlegt und den Variablen k & v zugewiesen
    for k, v in d.items():
        print(f"Key: {k} mit Wert: {v}")

    Key: a mit Wert: 5
    Key: b mit Wert: 8
    Key: c mit Wert: 10

In [18]:

    # Liste füllen
    squared = []
    for i in range(6):
        squared.append(i*i)
    squared

Out[18]:

    [0, 1, 4, 9, 16, 25]

In [19]:

    # List Comprehension
    sq = [n**2 for n in range(6)]
    sq

Out[19]:

    [0, 1, 4, 9, 16, 25]

In [20]:

    # Dict füllen
    di = {}
    for n in range(6):
        di[n] = n**2
    di

Out[20]:

    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

In [21]:

    # Dictionary Comprehension
    dic = {n: n**2 for n in range(6)}
    dic

Out[21]:

    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

## System Interaction¶

In [27]:

    input()

Out[27]:

    '4'

In [28]:

    text = input()

In [29]:

    text

Out[29]:

    '6'

In [30]:

    input("Gebe bitte eine Zahl ein:")

Out[30]:

    '7'

## File Handling¶

In [24]:

    f = open('test.txt') # Öffne File und gebe den Handler an f, Standard im Lesemodus
    f

Out[24]:

    <_io.TextIOWrapper name='test.txt' mode='r' encoding='UTF-8'>

In [25]:

    f.readlines() # Lese den Inhalt aus f

Out[25]:

    ['Super Secret Message\n', 'Hallo Welt\n', 'Geiler Kurs\n', 'Freitag 15h yeah']

In [28]:

    data = open('data.txt', 'w') # Öffne eine beschreibare File
    data

Out[28]:

    <_io.TextIOWrapper name='data.txt' mode='w' encoding='UTF-8'>

In [29]:

    data.write("Ich will nachhause") # Schreibe in die File

Out[29]:

    18

In [31]:

    # Schliese die Files
    f.close()
    data.close()

In [32]:

    # Standard File handling
    f = open('test.txt')
    print(f.readlines())
    f.close()

    ['Super Secret Message\n', 'Hallo Welt\n', 'Geiler Kurs\n', 'Freitag 15h yeah']

In [33]:

    f.readlines() # File ist geschlossen also ist lesen nicht möglich

    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    Cell In[33], line 1
    ----> 1 f.readlines() # File ist geschlossen also ist lesen nicht möglich

    ValueError: I/O operation on closed file.

In [35]:

    # Contexte nehmen einem die Arbeit ab
    with open('test.txt', 'r') as f:
        print(f.readlines())

    # File ist bereits geschlossen
    f.readlines() # Wirft Fehler

    ['Super Secret Message\n', 'Hallo Welt\n', 'Geiler Kurs\n', 'Freitag 15h yeah']

    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    Cell In[35], line 6
          3     print(f.readlines())
          5 # File ist bereits geschlossen
    ----> 6 f.readlines() # Wirft Fehler

    ValueError: I/O operation on closed file.

# Importing¶

In [46]:

    import math

In [47]:

    math

Out[47]:

    <module 'math' from '/usr/local/Cellar/python@3.12/3.12.5/Frameworks/Python.framework/Versions/3.12/lib/python3.12/lib-dynload/math.cpython-312-darwin.so'>

In [48]:

    math.pi

Out[48]:

    3.141592653589793

In [49]:

    math.sqrt(10)

Out[49]:

    3.1622776601683795

In [50]:

    math.sqrt(4)

Out[50]:

    2.0

In [37]:

    from math import sqrt

In [38]:

    sqrt

Out[38]:

    <function math.sqrt(x, /)>

In [52]:

    sqrt(90)

Out[52]:

    9.486832980505138

In [36]:

    from math import * # Böse nicht mache führt nur zu unerklärbaren Fehlern

In [40]:

    import numpy as np

In [41]:

    np.sqrt(9000)

Out[41]:

    np.float64(94.86832980505137)

In [42]:

    np

Out[42]:

    <module 'numpy' from '/home/phil/Desktop/programmieren_wise_24_25/Material/env/lib64/python3.12/site-packages/numpy/__init__.py'>