Warum wird die erste if Schleife immer ausgeführt?

Code-Stücke können hier veröffentlicht werden.
Antworten
Mr_Gamco
User
Beiträge: 1
Registriert: Donnerstag 19. November 2020, 20:35

Ich habe ein Skript erstellt dass die Katheten oder die Hypotenuse berechnen kann.
Aber warum wird jedes mal die erste Schleife ausgeführt obwohl der Input k oder K ist?

Code: Alles auswählen

import math

art = str(input("Soll die Kathete (k) oder Hypothenuse (h) berechnet werden : "))
if art == "h" or "H":
    a = float(input("Der kleinere Wert: "))
    b = float(input("Der größere Wert: "))
    
    a = a ** 2
    b = b ** 2
    
    zwischenschritt = a + b
    Ergebnis = math.sqrt(zwischenschritt)
    print(Ergebnis)

elif art == "k" or "K":
    a = float(input("Welchen Wert hat a: "))
    b = float(input("Welchen Wert hat b: "))

    a = a ** 2
    b = b ** 2

    zwischenschritt = a - b
    Ergebnis = math.sqrt(zwischenschritt)
    print(Ergebnis)
Vielen Dank für die Hilfe
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Weil if "H" immer True ergibt und die Bedingung somit zutrifft. Was du hier wohl versuchst ist:

if art == "h" or art == "H"

http://if-schleife.de/

Das Programm ist noch nicht sehr robust, da fehlerhafte Eingaben nicht behandelt werden. Bei der Kathetenberechnung fliegt ein domain error, wenn a < b ist. Input() liefert bereits einen String zurück und kann mittels lower() die Benutzereingabe gleich auf Kleinbuchstaben konvertieren.
When we say computer, we mean the electronic computer.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Und gewöhn dir den Begriff "if-Schleife" ab. Es gibt keine solche!
https://de.wikipedia.org/wiki/Bedingte_ ... erzweigung
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Mein Geometrieunterricht ist schon etwas her, aber ist bei einem rechtwinklingen Dreieck zur Berechnung der Hypothenuse nicht egal in welcher Reihenfolge man die Werte eingibt? Also a² + b² ist doch immer das Gleiche, im Gegensatz zu der Berechnung der Kathete bei der man ja c² (Hypothenuse) - a² (eine der Katheten )rechnen muss und dann die Wurzel ziehen um die fehlende Kathete herauszufinden.
Antworten