# Lösungen Tutorial 2

### Aufgabe¶

3 Punkte

Schreibe eine Funktion `sum_up` mit Eingabeparameter `n`, welcher die Zahlen von `1...n` aufsummiert.

Nutze dafür einen `for-loop`.

Beispiel:

$$n = 5$$ $$sum\_up(5) \rightarrow 1 \rightarrow 1 + 2 = 3 \rightarrow 3 + 3 = 6 \rightarrow 6 + 4 = 10 \rightarrow 10 + 5 = 15$$

Hinweis: die Funktion `range()` zählt standardmässig von `0...n-1`. Schauen Sie sich gerne dazu die offizielle Dokumentation an PEP 204.

In [2]:

    def sum_up(n: int) -> int:
        count = 0
        for i in range(1,n+1):
            count += i
        return count

    sum_up(5)

Out[2]:

    15

Es gibt immer einen besseren weg.

Nach Gauß:

$$\sum_{k=1}^n k = 1 + 2 + 3 + \dots + n = \frac{n(n+1)}{2}$$

In [10]:

    # nach Gauß
    def sum_up(n: int) -> int:
        return int(n*(n+1)/2)

    sum_up(5)

Out[10]:

    15

### Aufgabe¶

2 Punkte

Ihnen ist das Dictionary `dict2` gegeben. Ändern Sie jeden Wert in dem Dictionary nach der Formel $f(x) = x^3-1$ mittels `for-loop`.

Tipp: Lassen Sie sich nicht von den Schlüsseln verwirren.

In [7]:

    # Vorgegeben
    dict2 = {"a": 56, 5: 12, "python": 9, 3.14: 1.141414}
    dict2

Out[7]:

    {'a': 56, 5: 12, 'python': 9, 3.14: 1.141414}

In [5]:

    # Kurze Lösung mittels Dictionary Comprehension
    dict2 = {key: value**3-1 for key, value in dict2.items()}
    dict2

Out[5]:

    {'a': 175615, 5: 1727, 'python': 728, 3.14: 0.48706374396146557}

In [8]:

    # Lange Übersichtliche Lösung
    for key, value in dict2.items():
        dict2[key] = dict2[key]**3 - 1
    dict2

Out[8]:

    {'a': 175615, 5: 1727, 'python': 728, 3.14: 0.48706374396146557}

### Zusatzaufgabe¶

Keine Punkte

Erstellen Sie eine List mittels List Comprehension, welche die Zahlen `1...6` auf deren kubische Zahl `1...216` also der Funktion $f(x) = x^3$ abbildet.

In [11]:

    cubics = [n**3 for n in range(1,7)]
    cubics

Out[11]:

    [1, 8, 27, 64, 125, 216]

### Aufgabe¶

2 Punkte

Erstellen und Öffnen sie eine Datei `testfile.txt` mit der `open` Funktion, nutzen Sie dafür das `with`-Statement.

Schreiben Sie in diese Datei 100 mal den String `"Python\n"`.

In [12]:

    with open('testfile.txt', 'w') as f:
        for _ in range(100):
            f.write("Python\n")

### Aufgabe¶

2 Punkte

Öffnen Sie die zuvor erstellte Datei `testfile.txt` im Lesemodus und weißen Sie den Inhalt der `.readlines()` Funktion der Variabeln `lines` zu.

In [14]:

    lines = None # vorgegeben
    with open('testfile.txt', 'r') as f:
        lines = f.readlines()

    print("Anzahl der gelesenen Zeilen:", len(lines))

    Anzahl der gelesenen Zeilen: 100

### Aufgabe¶

3 Punkte

Importiere Python Built-In Library `random` und rufe zuerst aus dem Modul die Funktion `seed` auf mit dem Eingabewert `42`, und weiße danach der Variable `rand` den Wert des Funktionsaufrufes von `randint(1,100)` zu.

In [15]:

    rand = None # vorgegeben
    import random
    random.seed(42)
    rand = random.randint(1,100)
    rand

Out[15]:

    82

### Aufgabe¶

1 Punkt

Importieren Sie die Built-In Library `datetime` als `dt`.

In [16]:

    import datetime as dt
    print(dt.datetime.now())

    2024-11-08 11:58:43.750641

### Aufgabe¶

2 Punkte

Importieren Sie die Funktion `sqrt` aus dem Built-In Modul `math`. Berechnen Sie $\sqrt4$. Speichern Sie das Ergebnis in der variablen `s4`.

In [17]:

    from math import sqrt
    s4 = sqrt(4)
    s4

Out[17]:

    2.0