# Lösungen Tutorial 1¶

Aufgabe: Geben Sie den Text `Hallo Python` aus. 1 Punkt

In [1]:

    print("Hallo Python")

    Hallo Python

Aufgabe 2 Punkte:

Definieren Sie zunächst die zwei Variablen `a` und `b` und initialisieren diese mit einem Integerwert ungleich `0`:

In [2]:

    a = 1
    b = -2

Aufgabe 2 Punkte:

Definieren Sie zwei Variablen `s` und `t` und initialisieren diese mit einem Floatwert ungleich `0`:

In [3]:

    s = 1.5
    t = -2.7

Aufgabe 2 Punkte:

Addieren Sie die Werte der Variablen `a` und `b` und speichern Sie das Ergebnis in der Variable `c`:

In [4]:

    c = a + b
    c

Out[4]:

    -1

Aufgabe 5 Punkte:

Nutzen Sie die Variablen `a` & `b` und Speichern Sie die Ergebnisse für die Multiplikation, Division, Ganzzahldivision, Exponentiation und den Modulo-Operator in den unten angegebenen Variablen:

\begin{align} m &= a\cdot b\\ d &= \frac{a}{b}\\ i &= \lfloor\frac{a}{b}\rfloor\\ e &= a^b\\ r &= a\; \textrm{mod}\; b \end{align}

In [5]:

    m = a*b
    d = a/b
    i = a//b
    e = a**b
    r = a%b

Aufgabe 2 Punkte:

Ein String-Objekt (Text) können sie mit Hilfe von `'Some Text'` oder `"Some Text2"` definieren. Definieren sie die Variable `text` mit einem beliebigen Text.

In [6]:

    text = "Hi Mom, I am on TV!"
    print(text)

Out[6]:

    'Hi Mom, I am on TV!'

Aufgabe 1 Punkte:

Geben Sie die Variablen `a` & `b` aus Aufgabe 1 im format `"a = 12 und b = 12"` (Die Werte sollen dann den Werten aus ihrer Definition entsprechen. 12 ist hier nur ein Beispiel) aus.

In [7]:

    # 1. Möglichkeit Format Funktion
    print("a = {} und b = {}".format(a, b))

    a = 1 und b = -2

In [9]:

    # 2. Möglichkeit 'f'-String
    print(f"a = {a} und b = {b}")

    a = 1 und b = -2

Aufgabe 1 Punkte:

Definieren Sie die Variable `l` und weisen Sie dieser Variable eine Liste mit aufsteigenden Integerwerten von `0` bis `4` zu.

In [10]:

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

Aufgabe 1 Punkte:

Hängen Sie der Liste `l` noch den Wert `42` an.

Hinweis: Nutzen Sie dafür die Methode .append.

In [11]:

    l.append(42)

Aufgabe 1 Punkte:

Geben Sie das dritte Element der Liste `l` aus.

Hinweis: Achten Sie darauf das der erste Index immer `0` ist.

In [13]:

    l[2]

Out[13]:

    2

Aufgabe 1 Punkte:

Geben Sie das vorletzte Element der Liste `l` aus.

Hinweis: Achten Sie darauf das der letzte Index mit `-1` ausgegeben wird

In [14]:

    l[-2]

Out[14]:

    4

Aufgabe 1 Punkte:

Initialisieren Sie die Dictionary Variable `my_dict` mit folgendem Mapping:

Key | Value
--- | ---
`"apple"` | `"Apfel"`
`"banana"` | `"Banane"`
`"cherry"` | `"Kirsche"`

In [15]:

    my_dict = {"apple": "Apfel", "banana": "Banane", "cherry": "Kirsche"}

Aufgabe 1 Punkte:

Fügen Sie nun das Key-Value Paar `"pear": "Birne"` zu `my_dict` hinzu.

In [16]:

    my_dict["pear"] = "Birne"

Aufgabe 1 Punkte:

Geben Sie die nur die Werte des Dictionaries `my_dict` aus.

In [17]:

    print(my_dict.values())

    dict_values(['Apfel', 'Banane', 'Kirsche', 'Birne'])

Aufgabe 1 Punkte:

Geben Sie die Elemente des Dictionaries `my_dict` mit der Funktion `.items()` aus.

In [18]:

    print(my_dict.items())

    dict_items([('apple', 'Apfel'), ('banana', 'Banane'), ('cherry', 'Kirsche'), ('pear', 'Birne')])

## Recap¶

    def some_function_name(param1, param2):
        a = do_something1(param1)
        b = do_something2(a, param2)
        do_something3(b)
        return b

"gebe zurück" = `return` "gebe aus" = `print`

Aufgabe 1 Punkte:

Schreibe eine Funktion `successor` die auf jede Eingabe `+1` rechnet.

In [19]:

    def successor(n):
        return n+1

    successor(42)

Out[19]:

    43

Aufgabe 1 Punkte:

Schreibe eine Funktion `add` mit den Eingabeparametern `a` & `b`, welche die Werte von `a` & `b` miteinander addiert.

In [20]:

    def add(a,b):
        return a+b

    add(2,5)

Out[20]:

    7

Aufgabe 1 Punkte:

Schreibe eine Funktion `is_odd` mit einem Eingabeparameter `n` die prüft ob die eingegebene Zahl ungerade ist.

Wenn die Zahl gerade ist gebe den Text `"Gerade Zahl"` und bei ungerade `"Ungerade Zahl"` zurück.

In [21]:

    def is_odd(n):
        if n % 2 == 0:
            return "Gerade Zahl"
        else:
            return "Ungerade Zahl"

    print(is_odd(2))
    print(is_odd(3))

    Gerade Zahl
    Ungerade Zahl

Aufgabe 7 Punkte: Schreibe eine Funktion `fubar` mit Eingabeparameter `n`. Die Funktion soll wie folgt definiert sein:

- Der Eingabeparameter `n` ist ein Integer, Floats geben `False` zurück
- Negative zahlen & 0 beenden die Funktion und geben `False` zurück
- Die Funktion zählt bis einschließlich dem Eingabeparameter bsp.: $n=9 \rightarrow 1, 2, 3, \dots, 9$
- Bei jedem Schleifendurchlauf soll die Zahl bei der sich die Schleife gerade befindet mittels `print` ausgegeben werden werden.
- Ist der zurzeitige Schleifendurchlauf durch `3` teilbar, gebe mittels `print` denn String `Foo` aus.
- Ist der zurzeitige Schleifendurchlauf durch `5` teilbar, gebe mittels `print` denn String `Bar` aus.
- Ist der zurzeitge Schleifendurrchlauf durch `3 & 5` teilbar, gebe mittels `print` den String `FooBar` aus.

Tipp: Implementiere nicht alles aufeinmal sollte Schritt für Schritt und teste deine Lösung nach jedem Schritt.

In [22]:

    def fubar(n: int):
        if isinstance(n, float) or n < 1:
            return False

        count = 1
        while count <= n:
            msg = count
            if count % 3 == 0:
                msg = "Foo"
            if count % 5 == 0:
                msg = "Bar"
            if count % 15 == 0:
                msg = "FooBar"

            count += 1
            print(msg, end=', ')

In [24]:

    # Testen
    print("Negative Zahl", fubar(-1))
    print("Null", fubar(0))
    print("Float", fubar(0.1))
    print("Testen über 15")
    fubar(16)

    Negative Zahl False
    Null False
    Float False
    Testen über 15
    1, 2, Foo, 4, Bar, Foo, 7, 8, Foo, Bar, 11, Foo, 13, 14, FooBar, 16,