Übungen#
Übung 6.1
Schreiben Sie eine Funktion, die als Argument einen Integer \(n\) übergeben
bekommt und danach n-mal das Wort Hallo
ausdruckt. Testen Sie anschließend
Ihre Funktion.
Lösung
# Funktion
def schreibe_hallo(n):
for i in range(n):
print('Hallo')
# Test der Funktion
schreibe_hallo(7)
Übung 6.2
Der Body-Maß-Index BMI wird berechnet nach der Formel
wobei \(m\) das Gewicht (Masse) in kg ist und \(l\) die Körpergröße in m.
Schreiben Sie eine Funktion, die als Argument Gewicht und Körpergröße entgegennimmt und den BMI zurückgibt.
Schreiben Sie anschließend ein Hauptprogramm, das eine Benutzerin oder einen Benutzer nach Gewicht und Körpergröße fragt. Dann wird der BMI mittels der Funktion aus Schritt 1 berechnet und zuletzt wird ausgeben:
bei einem BMI < 18.5: Sie haben Untergewicht. Ihr BMI lautet: xx.
bei einem BMI im Intervall [18.5, 25.0]: Sie haben Normalgewicht. Ihr BMI lautet: xx.
bei einem BMI im Intervall [25.0, 30.0]: Sie haben Übergewicht. Ihr BMI lautet: xx.
bei einem BMI > 30.0: Sie haben Adipositas. Ihr BMI lautet: xx.
xx steht dabei für den ausgerechneten BMI.
Lösung
# Funktion zur Berechnung des BMI
def berechne_bmi(gewicht, koerpergroesse):
bmi = gewicht / koerpergroesse**2
return bmi
### HAUPTPROGRAMM ###
# Eingabe
m = float(input('Bitte geben Sie Ihr Gewicht in kg an: '))
l = float(input('Bitte geben Sie Ihre Körpergröße in m an: '))
# Verarbeitung
bmi = berechne_bmi(m,l)
# Ausgabe
if bmi <= 18.5:
print(f'Sie haben Untergewicht. Ihr BMI lautet {bmi :.1f}.')
elif bmi <= 25:
print(f'Sie haben Normalgewicht. Ihr BMI lautet {bmi :.1f}.')
elif bmi <= 30:
print(f'Sie haben Übergewicht. Ihr BMI lautet {bmi :.1f}.')
else:
print('Sie haben Adipositas, bitte suchen Sie einen Arzt auf. Ihr BMI lautet {bmi :.1f}.', bmi)
Übung 6.3
Lassen Sie einen Tannenbaum als sogenannte ASCII-Art zeichnen. Damit ist
gemeint, dass ein Bild durch Zeichen dargestellt wird. In diesem Fall sollen die
Blätter durch den Stern *
dargestellt werden und der Stamm durch drei
vertikale Striche |||
. Das Zeichnen des Tannenbaums soll als Funktion
implementiert werden, wobei die Höhe der Blätter und die Höhe des Stammes als
Argumente übergeben werden sollen. Die Funktion soll die Gesamthöhe des
Tannenbaums zurückgeben.
Testen Sie Ihre Funktion. Lassen Sie einen Tannenbaum mit Blätterhöhe 5 und einer Stammhöhe von 3 zeichnen. Darüber hinaus soll ausgegeben werden, wie hoch der Tannenbaum insgesamt ist. Beispielhaft könnte Ihr Test folgende Ausgabe produzieren:
Lösung
def zeichne_tannenbaum(blaetterhoehe, stammhoehe):
# Blätter zeichnen
for i in range(blaetterhoehe):
print(' ' * (blaetterhoehe - i - 1) + '*' * (2 * i + 1))
# Stamm zeichnen
for i in range(stammhoehe):
print(' ' * (blaetterhoehe - 1 - 1) + 3 * '|')
# Gesamthöhe berechnen und zurückgeben
gesamthoehe = blaetterhoehe + stammhoehe
return gesamthoehe
# Test
L = zeichne_tannenbaum(5, 3)
print(f'Der Tannenbaum ist insgesamt {L} Zeilen hoch.')
Übung 6.4
Schreiben Sie drei Funktionen. Die erste soll mit Hilfe des Turtle-Moduls den
Buchstaben R
zeichnen, die zweite den Buchstaben O
und die dritte den
Buchstaben T
.
Dabei sollen die Funktionen die folgenden Bedingungen erfüllen:
Jeder Buchstabe soll in einem rechteckigen Rahmen sein, bei dem die untere linke Ecke auf der Position \((start, 0)\) beginnt. Dabei wird
start
der Funktion als Argument übergeben. Der Rahmen muss aber nicht gezeichnet werden.Jede Funktion soll auch zurückgeben, wie breit der “gedachte” Rahmen ist.
Innerhalb jeder Funktion soll am Ende der Roboter auf die linke untere Ecke zurückkehren und it seiner Nase in Richtung Osten zeigen.
Testen Sie Ihre Funktion. Lassen Sie zuerst das Wort ROT
schreiben.
Probieren Sie auch TOR
aus.
Tipp: Für R und O dürfen Sie gerne die circle
-Methode verwenden, siehe
Dokumentation
ColabTurtlePlus.
Auch penup
, pendown
und goto
könnten hilfreich sein.
Lösung
import ColabTurtlePlus.Turtle as turtle
turtle.clearscreen()
robo = turtle.Turtle()
robo.speed(13)
def zeichne_R(start, robo):
robo.penup()
robo.goto(start, 0)
robo.pendown()
robo.left(90)
robo.forward(200)
robo.right(90)
robo.circle(-50, 180)
robo.left(135)
robo.goto(start + 50, 0)
robo.left(45)
# Rückkehr
robo.penup()
robo.goto(start,0)
return 50
def zeichne_O(start, robo):
robo.penup()
robo.goto(start + 50, 0)
robo.pendown()
robo.circle(50,360)
# Rückkehr
robo.penup()
robo.goto(start,0)
return 100
def zeichne_T(start, robo):
robo.penup()
robo.goto(start + 50, 0)
robo.left(90)
robo.pendown()
robo.forward(200)
robo.penup()
robo.goto(start + 0,200)
robo.right(90)
robo.pendown()
robo.goto(start + 100,200)
# Rückkehr
robo.penup()
robo.goto(start, 0)
return 100
auswahl = 'ROT'
if auswahl == 'ROT':
start_R = -100
breite_R = zeichne_R(start_R, robo)
start_O = start_R + breite_R + 10
breite_O = zeichne_O(start_O, robo)
start_T = start_O + breite_O + 10
zeichne_T(start_T, robo)
else:
start_T = -100
breite_T = zeichne_T(start_T, robo)
start_O = start_T + breite_T + 10
breite_O = zeichne_O(start_O, robo)
start_R = start_O + breite_O + 10
zeichne_R(start_R, robo)