Sie sind auf Seite 1von 6

Universität der Bundeswehr WT2024

Fakultät für Informatik – Institut 2 Übungsblatt 1


Prof. Dr. Wolfgang Hommel
Dr. Michael Steinke, Dr. Michael Grabatin, Kim Mönch

Einführung in die Programmierung


23.01.2024

1 Umgang mit Variablen und Datentypen


In dieser Aufgabe sollen Sie ein Gefühl dafür bekommen, wie Python mit Werten und Datentypen umgeht, und
wie Sie Variablen für komplexere Ausdrücke verwenden können.
a) Im Folgenden sind mehrere mehr oder minder korrekte Wertzuweisungen zu unterschiedlichen Variablen ge-
geben. Versuchen Sie zunächst ohne die Verwendung des Python-Interpreters die Gültigkeit der folgenden
Ausdrücke zu bestimmen. Ist eine Wertzuweisung Ihrer Meinung nach gültig, dann bestimmen und notieren
Sie für jeden Ausdruck den resultierenden Datentyp und Wert. Beschreiben Sie andernfalls, welche(r) Fehler
bei der jeweiligen Zuweisung unterlaufen sind/ist. Die Auswertung jeder Zeile steht dabei für sich.

> #Beispiel: z=14; gültig, Typ int mit Wert 14


> a = "12";
> var_b = true;
> c = 'python';
> d = 5;
> 2e = 7
> f = 5; _g = f*"ha";
> hi2 = 3.1415;
> ieeh = 'Pfui' + 8 + "Spinne";
> j-2 = 17+2;
> kalamari = not False and not True
> l = True and 2
> m = 3,1415;
> n = False or 2 and 5
> o = False and 2 or 5
> p = 25 == 5**2;
> q = 25.0/5
> r = 26//5.0
> s = 26-(26//5*5)
> t = 26%5

1
b) Re-Implementieren Sie in einem Ausdruck den Operator //, der in Python eine Ganzzahldivision dividend
//divisor durchführt. Greifen Sie dafür jedoch auf andere Operatoren von Python zurück, insbesondere /
(Division) und % (Modulo) sowie falls notwendig Subtraktion und Addition. Testen Sie Ihre Implementierung
in Python.

dividend = 111
divisor = 23

quotient = #CODE HIER


print("Der Ganzzahl-Quotient von ", dividend, "//", divisor, " ist ",
quotient)

c) Gegeben sei ein Dreieck mit den Seitenlängen


p a, b und c. Implementieren Sie den Satz des Heron zur Berech-
nung der Fläche des Dreiecks A = s ∗ (s − a) ∗ (s − b) ∗ (s − c) mit s = a+b+c 2 . Die drei Seitenlängen
werden in Ihrem Programm nacheinander über die Kommandozeile eingelesen (input()-Funktion). Stellen
Sie sicher, dass die eingelesenen Variablen keinen negativen Wert, sondern minimal 0 sind. Geben Sie am Ende
das Ergebnis der Berechnung im Terminal aus.

#Verwenden Sie die Funktion sqrt(x) zur Berechnung der Quadratwurzel


from math import sqrt;

# Kantenwerte einlesen
a = int(input("Geben Sie Seitenlänge a an:"))
# ... sicherstellen dass a nicht negativ

s = #... s berechnen
area = #... Fläche berechnen

#... Ergebnis ausgeben

2
2 Übungen zur Stringformatierung
In Python wie auch in vielen anderen Programmiersprachen ist Stringformatierung eine in der Praxis sehr häufig
eingesetzte Funktionalität zur Darstellung von Werten unterschiedlichen Typs in einem gewünschten Format.
Komplizierte Vorverarbeitung (z.B. Umrechnung von Integer-Darstellungen) können so vermieden werden.
Als Hilfestellung können Sie die Python-Dokumentation heranziehen:

https://docs.python.org/3/library/string.html

a) Gegeben sei ein Dezimalzahl-Wert 15910 . Geben Sie durch Stringformatierung den Wert in folgenden Varian-
ten als String zurück (mittels der Funktion format(), die auf einem String-Objekt aufgerufen werden kann)
und schreiben sie ihn auf die Konsole aus. Die erste Aufgabe stellt ein Beispiel dar.

• BEISPIEL: Der Wert als Hexadezimalzahl.

print("In Hex ist die Zahl {:x}".format(159))

• Der Wert als Hexadezimalzahl, aufgefüllt mit führenden Nullen zu acht Zeichen.

• Der Wert als Float.

• Der Wert als Float mit drei Nachkommastellen.

• Der Wert als Float mit drei Nachkommastellen und fünf Vorkommastellen.

• Den Wert als Integer-Dezimalzahl mit Vorzeichen und einem Padding auf 9 Zeichen zwischen
Vorzeichen und Wert.

b) Gegeben ist der String "Python" und die Dezimalzahl 3. Nehmen Sie die folgenden Stringformatierungen
vor.
• Konkatenation der beiden Werte in der gegebenen Reihenfolge.

• Konkatenation mit Padding auf 15 Zeichen, zentral ausgerichtet. (Benötigt zwei format-Aufrufe)
• Den String "Python" links ausgerichtet mit einem Padding auf 10 Zeichen und nachfolgender De-
zimalzahl 3.

3
3 Einfache Funktionen
In dieser Aufgabe sollen Sie den Umgang mit einfachen Funktionen in Python kennenlernen und üben.
a) In dieser Aufgabe wird bei jedem Start des Programms eine zufällige Zahl number zwischen 1 und 100 gene-
riert (nutzen Sie dazu die Methode randint(1,100)). Implementieren Sie die Funktion correct_guess
(secret), dessen Funktionskopf bereits vorgegeben ist und solange aufgerufen wird, bis die richtige Zahl
secret erraten wurde. Wenn die erratene Zahl, die über die Funktion safe_input eingelesen wird, klei-
ner oder größer als secret ist, geben Sie einen entsprechenden Hinweis auf der Konsole aus und lassen Sie
correct_guess den Wert False zurückgeben. Ist die geratene Zahl gleich groß wie secret, dann geben
Sie ebenfalls einen Hinweis auf der Konsole aus und geben in der Funktion True zurück. Es sollen X Runden
gespielt werden, wobei X initial vom Nutzer abgefragt wird. Geben Sie auch am Anfang einer neuen Runde
die jeweilige Rundennummer aus!

from random import randint

def safe_input():
try:
return int(input())
except:
print("Das ist keine richtige Zahl!\n")
return safe_input()

#... Code hier

b) Implementieren Sie eine Funktion to_degree_fahrenheit(celsius, genauigkeit=0), die den


Wert des ersten Parameter celsius in Grad Celsius in die Einheit Grad Fahrenheit umrechnet zurückgibt.
Der zweite, benannte Parameter genauigkeit gibt dabei die Anzahl der Nachkommastellen an, die da-
bei angegeben werden sollen. Ohne Angabe der Genauigkeit, werden Nachkommastellen abgeschnitten
(genauigkeit=0). Stellen Sie auch sicher, dass genauigkeit zwischen 0 und 5 liegt.

4
4 Zahlenraten
Aus der Vorlesung in Kapitel 3 kennen Sie bereits das folgende Spiel zum Zahlenraten mittels while-Schleife:
from random import randint

gedacht = randint(1, 10)


print("Errate die Zahl zwischen 1 und 10!")

while True:
geraten = int(input("Dein Tipp: "))
if geraten > gedacht:
print("Nein, ist kleiner!")
elif geraten < gedacht:
print("Nein, ist größer!")
else:
break

print("Genau!")

a) Fügen Sie eine Zählvariable ein, die zählt, wie häufig der Spieler raten musste, bis er die richtige Zahl erraten
hat. Geben Sie diese Zahl aus, wenn die Zahl richtig erraten wurde.
b) Modifizieren Sie Ihren Code jetzt so, dass der Spieler beim Raten nur eine begrenzte Anzahl an Versuchen hat
(z. B. 5). Verwenden Sie hierzu das while-else-Konstrukt.
c) Bauen Sie nun noch eine Überprüfung in Ihren Code ein, der checked ob zweimal hintereinander die selbe
Zahl geraten wurde. In diesem Fall soll der Versuch nicht als Zug zählen. (Sie können also unendlich oft die
gleiche Zahl raten.)

5
5 Approximation von π
Zur näherungsweisen Berechnung des Wertes von π gibt es viele verschiedene Verfahren. Eine Methode verwendet
die Leibniz-Reihe1 zur Annäherung. Je länger die Reihe berechnet wird, desto genauer ist die Approximation von
π:

4 4 4 4 4 4
π≈ − + − + − ... (1)
1 3 5 7 9 11

a) Formulieren Sie die Reihe als for-Schleife, die ausgehend von dem Startwert 4 jeweils abwechselnd den
nächsten Bruch subtrahiert und addiert. Verwenden Sie fürs erste den Bereich range(0, 200) für Ihre
Schleife und geben Sie nach erfolgreichem Durchlaufen der Schleife das Ergebnis per print()-Aufruf aus.
b) Fügen Sie Ihren Code in eine Funktion calc_pi ein. Die Funktion soll einen Parameter haben, der die obere
Schranke für die Anzahl der Schleifendurchläufe angibt. Geben Sie bei jedem Schleifendurchlauf den aktuellen
Wert des Zählers, den aktuellen Wert für π und den aktuellen Wert des Bruchs aus.
c) Kopieren Sie Ihre Funktion und tauschen Sie die for-Schleife gegen eine while-Schleife. Die Schleife soll
so lange durchlaufen werden, bis die Differenz zwischen der angenäherten Zahl und math.pi kleiner ist, als
der als Parameter übergebene Wert. Wenn Sie π hinreichend genau approximiert haben, geben Sie die Anzahl
der notwendigen Schleifendurchläufe zurück.
Um math.pi verwenden zu können, müssen Sie zunächst das math-Paket importieren. Fügen Sie dazu am
Anfang Ihrer Datei import math ein.

1 https://de.wikipedia.org/wiki/Leibniz-Reihe

Das könnte Ihnen auch gefallen