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

Ein Programm mit Benutzereingaben

Vorgaben im Programm

Im bisher benutzten Programm zur Berechnung der Blutalkoholkonzentration sind die Ausgangsdaten fest vorgegeben.

# Initialisierung
volumenGetraenk = 2 # Liter
anteilAlkohol = 2.5 # Prozent
massePerson = 50 # kg
reduktionsfaktorJugendlicher = 0.6
# Verarbeitung
masseAlkohol = 10*anteilAlkohol*volumenGetraenk*0.8
konzentrationAlkohol = masseAlkohol/(massePerson*reduktionsfaktorJugendlicher)
# Ausgabe
print('Die berechnete Alkoholkonzentration im Blut beträgt:')
print(konzentrationAlkohol, 'Promille')

Das hat den Nachteil, dass das Programm nur für genau diese Daten den gesuchten BAK-Wert liefert. Interessanter wäre das Programm, wenn man es für beliebige (sinnvolle) Ausgangsdaten nutzen könnte.

Eingaben durch den Benutzer

Im folgenden Programm werden Benutzereingaben mit Hilfe des input-Operators an geeignete Variablen weitergegeben. Was es mit dem float-Operator auf sich hat, werden wir in den weiteren Abschnitten klären.

# Eingabe
print('Gib die Ausgangsdaten ein:')
volumenGetraenk = float(input('Aufgenommene Flüssigkeitsmenge in Liter: '))
anteilAlkohol = float(input('Alkoholgehalt des Getränks in Prozent: '))
massePerson = float(input('Körpermasse in kg: '))
# Verarbeitung
reduktionsfaktorJugendlicher = 0.6
masseAlkohol = 10*anteilAlkohol*volumenGetraenk*0.8
konzentrationAlkohol = masseAlkohol/(massePerson*reduktionsfaktorJugendlicher)
# Ausgabe
print('')
print('Die berechnete Alkoholkonzentration im Blut beträgt:')
print(konzentrationAlkohol, 'Promille')

Aufgabe 1

(a) Teste das Programm mit unterschiedlichen Eingabewerten.

(b) Der Reduktionsfaktor beträgt bei Frauen und Jugendlichen 0.6 und bei Männern 0.7. Ändere das Programm so ab, dass der Benutzer auch den Reduktionsfaktor eingeben kann. Mache dir auch klar, was ein größerer / kleinerer Reduktionsfaktor bewirkt.

(c) Was leistet das folgende Programm. Kannst du es durch eine Analyse des Quelltextes vorhersagen?

# Eingabe
print('Gib die Ausgangsdaten ein:')
volumenGetraenk = float(input('Aufgenommene Flüssigkeitsmenge in Liter: '))
anteilAlkohol = float(input('Alkoholgehalt des Getränks in Prozent: '))
massePerson = float(input('Körpermasse in kg: '))
geschlecht = input('Geschlecht (w/m): ')
# Verarbeitung
if geschlecht == 'w':
    reduktionsfaktorJugendlicher = 0.6
else:
    reduktionsfaktorJugendlicher = 0.7
masseAlkohol = 10*anteilAlkohol*volumenGetraenk*0.8
konzentrationAlkohol = masseAlkohol/(massePerson*reduktionsfaktorJugendlicher)
# Ausgabe
print('')
print('Die berechnete Alkoholkonzentration im Blut beträgt:')
print(konzentrationAlkohol, 'Promille')

Hinweis: Mit Fallunterscheidungen werden wir uns detaillierter in weiteren Abschnitten beschäftigen.

(d) Manche Eingaben werden mit dem input-Operator und dem float-Operator realisiert, andere Eingaben erfordern nur die Verwendung des input-Operators. Woran könnte das liegen?

X

Fehler melden

X

Suche