Hallo,
Als kleine Übung habe ich mir folgenden Code aufgebaut:
a = 2
b = 5
ab = input(str())
ba = input(str())
If ba == "Hallo" or "H":
print(a*float(ab))
else:
if ba == "Good" or "G":
print(b*float(ab))
Als ab gibt man eine Zahl ein und als ba entweder das Hallo oder Good. Doch das Problem dabei ist nur, dass wenn man für ba Good eingibt die Rechnung a*ab ausgeführt wird, anstelle b*ab. Darum wollte ich Fragen, wie man den Code so bearbeiten kann, sodass mit der Eingabe von Good auch die Rechnung b*ab ausgeführt wird und mit der Eingabe von Hallo die Rechnung a*ba berechnet wird. Für die Antworten schon mal vielen Dank im Voraus!
Input
Gerade heute hier besprochen: viewtopic.php?t=54188
- __blackjack__
- User
- Beiträge: 14078
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Neuer_User: ``str()`` ist ein umständlicher Weg ``""`` zu schreiben, und die leere Zeichenkette ist der Default-Wert für das Argument von `input()`, da würde man also einfach gar nichts übergeben beim Aufruf. Allerdings wäre es für den Benutzer sicher sinnvoll dem irgendwie zu vermitteln, dass er "Hallo", "H", "Good", oder "G", beziehungsweise eine Gleitkommazahl eingeben soll.
Diese Namen `a`, `b`, `ab`, oder `ba` solltest Du Dir ganz schnell abgewöhnen. Namen sollen dem Leser die Bedeutung des Wertes dahinter verraten. Diese willkürlichen, kurzen Namen, tun das überhaupt nicht.
Das ``else`` mit dem verschachtelten ``if`` wäre ein Fall für ``elif``. Und es fehlt im Grunde noch die Behandlung des Falles, dass beide ``if``-Bedingungen nicht zutreffen.
Die Umwandlung in einen Datentyp mit dem man weiterarbeiten kann, gehört zur Eingabe und nicht zur Rechnung. Wenn der Benutzer etwas eingegeben hat, dass sich nicht in eine Gleitkommazahl umwandeln lässt, dann will man die entsprechende Fehlerbehandlung bei der Eingabe haben und nicht bei der Rechnung, wo es dann auch zu spät wäre, Code zu schreiben, der solange nach einer Eingabe fragt, bis diese den Anforderungen entspricht.
Diese Namen `a`, `b`, `ab`, oder `ba` solltest Du Dir ganz schnell abgewöhnen. Namen sollen dem Leser die Bedeutung des Wertes dahinter verraten. Diese willkürlichen, kurzen Namen, tun das überhaupt nicht.
Das ``else`` mit dem verschachtelten ``if`` wäre ein Fall für ``elif``. Und es fehlt im Grunde noch die Behandlung des Falles, dass beide ``if``-Bedingungen nicht zutreffen.
Die Umwandlung in einen Datentyp mit dem man weiterarbeiten kann, gehört zur Eingabe und nicht zur Rechnung. Wenn der Benutzer etwas eingegeben hat, dass sich nicht in eine Gleitkommazahl umwandeln lässt, dann will man die entsprechende Fehlerbehandlung bei der Eingabe haben und nicht bei der Rechnung, wo es dann auch zu spät wäre, Code zu schreiben, der solange nach einer Eingabe fragt, bis diese den Anforderungen entspricht.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
-
- User
- Beiträge: 2
- Registriert: Montag 28. Februar 2022, 19:49
Vielen dank für eure Antworten, dass hilft mir weiter!