Basics & Zahlentypen¶

Aufgabe: Geben Sie den Text Hallo Python aus.

In [1]:
print("Hallo Python")
Hallo Python

Aufgabe: 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: Definieren Sie zwei Variablen s und t und initialisieren diese mit einem Floatwert ungleich 0:

In [3]:
s = 1.5
t = -2.7

Aufgabe: 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: 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 [7]:
m = a*b
d = a/b
i = a//b
e = a**b
r = a%b

print(m, d, i, e, r, sep='\n')
-2
-0.5
-1
1.0
-1

Aufgabe: 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 [9]:
text = "Hi Mom, I am on TV!"
text
Out[9]:
'Hi Mom, I am on TV!'

Aufgabe: 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 [10]:
print("a = {} und b = {}".format(a, b))
a = 1 und b = -2
In [13]:
print(f"a = %d und b = %d" % (a, b))
a = 1 und b = -2
In [14]:
print(f"a = {a} und b = {b}")
a = 1 und b = -2

Listen¶

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

In [16]:
l  = list(range(5))
l
Out[16]:
[0, 1, 2, 3, 4]
In [22]:
l = [0, 1, 2, 3, 4]
l
Out[22]:
[0, 1, 2, 3, 4]

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

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

In [23]:
l.append(42)
l
Out[23]:
[0, 1, 2, 3, 4, 42]

Aufgabe: Geben Sie das dritte Element der Liste l aus.

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

In [24]:
l[2]
Out[24]:
2

Aufgabe: Geben Sie das vorletzte Element der Liste l aus.

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

In [25]:
l[-2]
Out[25]:
4

Dictionaries¶

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

Key Value
"apple" "Apfel"
"banana" "Banane"
"cherry" "Kirsche"
In [26]:
my_dict = {"apple": "Apfel", "banana": "Banane", "cherry": "Kirsche"}

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

In [27]:
my_dict["pear"] = "Birne"
my_dict
Out[27]:
{'apple': 'Apfel', 'banana': 'Banane', 'cherry': 'Kirsche', 'pear': 'Birne'}
In [30]:
my_dict.update({"pear": "Birne"})
my_dict
Out[30]:
{'apple': 'Apfel', 'banana': 'Banane', 'cherry': 'Kirsche', 'pear': 'Birne'}

Aufgabe: Geben Sie die nur die Werte des Dictionaries my_dict aus.

In [31]:
print(my_dict.values())
dict_values(['Apfel', 'Banane', 'Kirsche', 'Birne'])

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

In [32]:
print(my_dict.items())
dict_items([('apple', 'Apfel'), ('banana', 'Banane'), ('cherry', 'Kirsche'), ('pear', 'Birne')])

Funktionen¶

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

In [34]:
def successor(n: int) -> int:
    return n+1
    
successor(1)
Out[34]:
2

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

In [36]:
def add(a: int, b: int) -> int:
    return a+b

add(2, 3)
Out[36]:
5

Kontrollstruckturen¶

Aufgabe: 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 [37]:
def is_odd(n):
    if n % 2 == 0:
        return "Gerade Zahl"
    else:
        return "Ungerade Zahl"

print(is_odd(8), is_odd(7), sep='\n')
Gerade Zahl
Ungerade Zahl

Aufgabe: Schreibe eine Funktion faktoriel mit Eingabeparameter n, welche die Fakultät der Zahl n berechnet. Dabei ist die Fakultät definiert als

$$f(n) = n! = 1 \cdot 2 \cdot 3 \cdot ... \cdot n-1 \cdot n$$

Ein Beispiel für die Zahl 5:

$$5! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot 5$$ $$\Rightarrow 5! = 2 \cdot 3 \cdot 4 \cdot 5$$ $$\Rightarrow 5! = 6 \cdot 4 \cdot 5$$ $$\Rightarrow 5! = 24 \cdot 5$$ $$\Rightarrow 5! = 120$$

Für den Fall n=0 ist $0!=1$ für negative (-1) und gebrochene Zahlen (3.14) ist die Fakultät nicht definiert, gebe daher für die Spezialfälle -1 zurück.

In [39]:
def faktoriel(n: int) -> int:
    if not isinstance(n, int):
        return -1  
    if n < 0:
        return -1
    if n == 0:
        return 1
    
    count = 1
    while n > 0:
        count *= n
        n -= 1
    return count

faktoriel(5)
Out[39]:
120

Aufgabe: Schreibe eine Funktion sum_up, mit Eingabeparameter n, die einen for-loop implementiert, welcher die Zahlen von 1...n aufsummiert.

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

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

sum_up(100)
Out[41]:
5050

Nach Gauß ist: $$\sum_{k=1}^n k = \frac{n(n+1)}{2}$$ Dementsprechen ist dies eine Lösung ohne For Loop:

In [45]:
def sum_up(n: int) -> int:
    return int(n*(n+1)/2)

sum_up(100)
Out[45]:
5050

Aufgabe: Ihnen ist ein Dictionary 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 [51]:
dictionary = {"a": 56, 5: 12, "python": 9, 3.14: 1.141414}

for key, value in dictionary.items():
    dictionary[key] = value**3-1

dictionary
Out[51]:
{'a': 175615, 5: 1727, 'python': 728, 3.14: 0.48706374396146557}
In [52]:
dictionary = {"a": 56, 5: 12, "python": 9, 3.14: 1.141414}

dictionary = {key: value**3-1 for key, value in dictionary.items()}

dictionary
Out[52]:
{'a': 175615, 5: 1727, 'python': 728, 3.14: 0.48706374396146557}

Zusatzaufgabe: 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 [47]:
cubics = [n**3 for n in range(1,7)]
cubics
Out[47]:
[1, 8, 27, 64, 125, 216]

Aufgabe: Gegeben sei ein Loop, welcher auf ein IndexError beim ausführen stößt. Verhindern Sie mittels try-except das dieser Loop einen Fehler wirft.

In [48]:
l = [2**n for n in range(10)]
s = list()
f = lambda l, i: l[i] - l[i+1]

for i in range(len(l)):
    try:
        s.append(f(l,i))
    except:
        continue
        
s
Out[48]:
[-1, -2, -4, -8, -16, -32, -64, -128, -256]

Inputs¶

Aufgabe: Schreibe ein Programm, welches den Input vom User als eine Zahl entgegen nimmt und diese Zahl+2 zurückgibt.

Wichtig ist das der Wert als String zurückgegeben wird und vorher mittels int() Funktion zu einer Zahl umgewandelt werden muss.

In [ ]:
a = int(input("Sag mir eine Zahl"))
print(a+2)

Aufgabe: 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 [54]:
with open('testfile.txt', 'w') as f:
    for _ in range(100):
        f.write("Python\n")

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

In [57]:
lines = None

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

print("Länge:", len(lines))
print("Erstes Element:", lines[0])
Länge: 100
Erstes Element: Python

Alternative ohne with Statement:

In [62]:
lines = None

f = open('testfile.txt', 'r')
lines = f.readlines() 
f.close()

print("Länge:", len(lines))
print("Erstes Element:", lines[0])
Länge: 100
Erstes Element: Python

Import¶

Aufgabe: 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 [58]:
rand = None

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

rand
Out[58]:
82

Aufgabe: Importieren Sie die Built-In Library datetime als dt.

In [60]:
import datetime as dt

dt
Out[60]:
<module 'datetime' from '/usr/lib/python3.11/datetime.py'>

Aufgabe: Importieren Sie die Funktion sqrt aus dem Built-In Modul math.

In [61]:
from math import sqrt

sqrt
Out[61]:
<function math.sqrt(x, /)>