# Lösungen zur Woche 1 ## 1. Allgemeine Fragen zum Programmieren & Python 1. _In welchem Format wird Programmcode üblicherweise gespeichert?_ Antwort: In einer herkömmlichen Textdatei. 2. _Braucht man ein spezielles Programm um Code zu bearbeiten?_ Antwort: Nein, ein konventioneller Texteditor reicht. Es gibt aber Programme, die dabei noch hilfreiche Zusatzfunktionen anbieten, wie z.B. automatisches Vervollständigen. 3. _Weshalb gibt es viele verschiedene Programmiersprachen? Warum kann man nicht sagen, dass eine davon die beste ist?_ Antwort: Verschiedene Programmiersprachen haben verschiedene Stárken und Schwächen und sind für unterschiedliche Nutzungszwecke geeignet. 4. _Wieso benutzen wir Python?_ Antwort: Es ist eine Anfängerfreundliche Sprache und an vielen Orten einsetzbar. 5. _Muss man Python installiert haben um ein Python-Programm auszuführen? Ist das bei anderen Sprachen anders?_ Antwort: Ja, Python muss installiert sein. Bei anderen Sprachen ist das nicht zwingend so. Man spricht von interpretierten bzw. kompilierten Sprachen. 6. _In welcher Reihenfolge wird ein Python-Programm ausgeführt?_ Antwort: Zeile für Zeile von oben nach unten. ## 2. Ausgabe von Programmen Was geben die folgenden Programme aus? Führe sie dazu nicht aus, sondern überlegen sie sich, was die Programme machen! 0. **Beispiel** Programm: ```python print("abc") ``` Ausgabe: ``` abc ``` 1. Programm: ```python print(((2 + 3) * 5) - 4) ``` Ausgabe: ``` 21 ``` 2. Programm: ```python a = "Hello" b = "World" print(a + b) ``` Ausgabe: ``` # Man beachte den fehlenden Abstand HelloWorld ``` 3. Programm: ```python a = 100 b = 2 * a a = b + 3 print(a) ``` Ausgabe: ``` 203 ``` 4. Programm: ```python x = 8 x *= 2 x *= 2 print(f"Das Resultat ist {x}") ``` Ausgabe: ``` Das Resultat ist 32 ``` 5. Programm: ```python x = 7 a = 4 * x b = (2 * x) + 1 msg = "The secret code is " + str(a) + str(b*3) print(msg) ``` Ausgabe: ``` The secret code is 2845 ``` 6. Programm: ```python name = "Silsergipfel" # Aktueller Preis in der Migros preis = 1.05 anzahl = 3 print(f"{anzahl} {name} kosten {anzahl * preis}") anzahl += 2 print(f"{anzahl} {name} kosten {anzahl * preis}") ``` Ausgabe: ``` # Hier sieht man ein Rundungsfehler, der beim Umgang mit Floats entstehen kann. # Das konntet ihr aber nicht wissen... 3.15 ist auch ok 3 Silsergipfel kosten 3.1500000000000004 5 Silsergipfel kosten 5.25 ``` 7. Programm: ```python # Hier ist es sicher hilfreich, eine Tabelle mit Variablenwerten zu machen a = 6 b = 4 * a a += 8 c = b - a a = b * c a -= 2 * b + 3 * c print(a - 120) ``` Ausgabe: ``` 42 ``` ## 3. Allgemeine Fragen zu Datentypen und Ausgabe 1. _Was versteht man under einem Datentyp?_ Antwort: Datentypen bezeichnen ganz allgemein welche möglichen Werte in einem gewissen Kontext vorkommen können. Verschiedene Datentypen werden intern unterschiedlich verarbeitet und gespeichert. 2. _Welche Datentypen kennen sie? Zählen sie mindestens zwei auf und erklären sie, für was sie verwendet werden können_ Antwort: * int: Ganze Zahlen, häufig gebraucht um irgendetwas zu zählen. * str: Zeichenketten, gebraucht um irgendwelche Texte zu speichern. * bool: Wahrheitswerte, damit können zum Beispiel Entscheidungen getroffen werden. 3. _Für was können f-Strings benutzt werden und was vereinfacht sich dadurch?_ Antwort: Mit f-Strings lassen sich Variablen direkt in Strings einsetzen. Es entfallt die mühsame Umwandlung und Zusammenkettung mit `+`. 4. _Was passiert, wenn man zwei Strings addiert?_ Antwort: Sie werden zusammengekettet, also aneinander gehängt. ## 4. Fehlerhafte Programme Folgende Programme enthalten jeweils genau einen Fehler! Beheben sie ihn und schreiben sie jeweils, was sie geändert haben. 1. Programm: ```python print("Hallo!") ``` Antwort: Hallo! muss von Anführungszeichen umgeben sein, damit es eine String ist. 2. Programm: ```python a = 12 b = a b *= 2 print(f"Das doppelte von {a} ist {b}") ``` Antwort: `b * 2` muss mit `b *= 2` ersetzt werden. 3. Programm: ```python a = 3 b = a + 1 a2 = a * a b2 = b * b diff = b2 - a2 print(f"Die Differenz zwischen {a2} und der nächstgrösseren Quadratzahl ist {diff}") ``` Antwort: Es muss die Differenz von `b2` und `a2` und nicht `b2` und `a` genommen werden. 4. Programm: ```python age = 34 # Möglichkeit 1 print("Python ist bereits " + str(age) + " Jahre alt") # Möglichkeit 2 print(f"Python ist bereits {age} Jahre alt") ``` Antwort: Entweder muss `age` explizit zu einer String gemacht werden oder stattdessen das ganze mit einer f-String ersetzt werden. ## 5. Programme vervollständigen Bei den folgenden Programmen fehlt jeweils ein Teil. Vervollständigen sie sie, so dass die Programme das machen was in ihren Kommentaren steht. 1. Programm: ```python a = 777 b = 64 # Geben sie die Summe von a und b aus print(a + b) ``` 2. Programm: ```python radius = 2.3 pi = 3.14159 # Berechnen und geben sie Fläche und Umfang des Kreises mit dem gegebenen # Radius aus. Benutzen sie dabei falls möglich nur einen print-Befehl. print(f"Fläche: {pi*(radius**2)}") print(f"Umfang: {2*pi*radius}") ``` 3. Programm: ```python preis_einkauf = 1.0 preis_verkauf = 1.2 anzahl = 30 # Berechnen sie den insgesamten Profit für die gegebene Anzahl Produkte # mit den gegeben Einkauf- und Verkaufspreisen. Speicheren sie das Resultat # in der Variable `profit`, so dass der untere Code so bleiben kann. profit = anzahl * (preis_verkauf - preis_einkauf) print(f"Der Insgesamte Profit ist {profit} CHF") ``` 4. Programm: ```python p1_x = 2 p1_y = 1 p2_x = 5 p2_y = -3 # Berechnen sie die Distanz zwischen den beiden Punkten p1 und p2, wessen # Koordinaten durch die obigen Variablen gegeben sind. # Hinweis: Wenden sie den Satz von Pythagoras an! Eine Wurzel entspricht # einer Potenzierung mit 0.5 dist2 = (p1_x - p2_x)**2 + (p1_y - p2_y)**2 dist = dist2**0.5 print(f"Die Distanz zwischen den beiden Punkten ist: {dist}") ```