Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Beispiel - Temperaturumrechner

Hitzrekord in den USA

Neulich stand in einer Zeitung:

Im Death Valley nordwestlich von Los Angeles wurden gestern 119 Grad erreicht.

Ziemlich heiß! Da benötigt man keinen Herd zum Wasserkochen, oder? 119 Grad ist heiß, aber nicht ganz so heiß, wie man vielleicht auf den ersten Blick denkt. Zu beachten ist, dass Temperaturen in den USA in Grad Fahrenheit angegebenen werden. 119 Grad Fahrenheit entsprechen etwa 48 Grad Celsius. Aber, das ist immer noch sehr heiß.

Umrechnung von Temperaturangaben

Wenn man öfters Temperaturangaben in den USA und in Europa vergleichen möchte, benötigt man einen Temperaturumrechner von Fahrenheit in Celsius und umgekehrt von Celsius in Fahrenheit.

Hier die Umrechnungsformeln:

tC = (tF − 32)· 5/9     und     tF = tC· 1.8 + 32

Zur Umrechnung von Fahrenheit in Celsius konzipieren wir die folgende Funktion.

<Black-Box-Diagramm><Funktionsname>fahrenheitToCelsius</Funktionsname><Übergaben><Übergabe><Wert>118</Wert><Variable>temperatur</Variable><Typ>float</Typ></Übergabe></Übergaben><Rückgabe><Typ>float</Typ><Wert>47.7..</Wert></Rückgabe></Black-Box-Diagramm>

Mit der Umrechnungsformel lässt sich diese Funktion direkt definieren.

def fahrenheitToCelsius(temperatur):
    return (temperatur - 32)*(5/9)

Aufgabe 1: Temperaturumrecher

(a) Teste die Funktion fahrenheitToCelsius mit verschiedenen Übergabedaten.

(b) Entwickle analog eine Funktion celsiusToFahrenheit.

Variante: Rückgabe als Datum vom Typ "ganze Zahl"

Das Ergebnis bei der Berechnung der Celsius-Temperatur soll jetzt als gerundeter Wert vom Datentyp int zurückgegeben werden.

<Black-Box-Diagramm><Funktionsname>fahrenheitToCelsius</Funktionsname><Übergaben><Übergabe><Wert>118.0</Wert><Variable>temperatur</Variable><Typ>float</Typ></Übergabe></Übergaben><Rückgabe><Typ>int</Typ><Wert>48</Wert></Rückgabe></Black-Box-Diagramm>

Funktionsdefinition:

def fahrenheitToCelsius(temperatur):
    return round((temperatur - 32)*(5/9))

Beachte, dass hier die vordefinierte Funktion round benutzt wird.

Aufgabe 2

Teste diese Funktion.

Variante: Rückgabe als Datum vom Typ "Tupel"

Zurückgegeben werden soll jetzt ein Tupel bestehend aus einer Gleitkommazahl und einer Zeichenkette.

<Black-Box-Diagramm><Funktionsname>fahrenheitToCelsius</Funktionsname><Übergaben><Übergabe><Wert>118.0</Wert><Variable>temperatur</Variable><Typ>float</Typ></Übergabe></Übergaben><Rückgabe><Typ>tupel</Typ><Wert>(47.7..., '°C')</Wert></Rückgabe></Black-Box-Diagramm>

Funktionsdefinition:

def fahrenheitToCelsius(temperatur):
    return ((temperatur - 32)*(5/9), '°C')

Eine Funktion kann also auch mehrere Werte in Form eines Datentupels zurückgeben.

Aufgabe 3

Teste diese Funktion.

Variante: Rückgabe als Datum vom Typ "Zeichenkette"

Hier soll jetzt eine Temperaturangabe mit dem Zusatz "°c" zurückgegeben werden.

<Black-Box-Diagramm><Funktionsname>fahrenheitToCelsius</Funktionsname><Übergaben><Übergabe><Wert>118.0</Wert><Variable>temperatur</Variable><Typ>float</Typ></Übergabe></Übergaben><Rückgabe><Typ>str</Typ><Wert>'47.7... °C'</Wert></Rückgabe></Black-Box-Diagramm>

Funktionsdefinition:

def fahrenheitToCelsius(temperatur):
    return str((temperatur - 32)*(5/9)) + '°C'

Mit der Funktion str wird die berechnete Zahl in eine Zeichenkette umgewandelt. Mit der Funktion + werden dann zwei Zeichenketten aneinandergefügt.

Aufgabe 3

Teste diese Funktion.

Aufgabe 4: Wortreicher Temperaturumrechner

Ändere die Funktionsdefinition so ab, dass folgendes Verhalten vorliegt.

>>> fahrenheitToCelsius(118)
'118°F entspricht etwa 48°C'

Aufgabe 5

Entwickle verschiedene Varianten für die Funktion celsiusToFahrenheit.

Aufgabe 6

Informiere dich über ...

X

Fehler melden

X

Suche