Ich hänge leider fest...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Flashpoint
User
Beiträge: 3
Registriert: Mittwoch 4. Mai 2022, 17:27

Hey liebe Community,
ich komme leider an einem Punkt nicht weiter mit meiner Temperatur Aufgabe...
ich habe die Vermutung das der Fehler bei der Einrückung von den if und else Befehlen liegt kann das sein...?

Wäre euch sehr dankbar um etwas Hilfe :)

Code: Alles auswählen

print("(a) Umrechnung von Celsius nach Kelvin")                  
print("(b) Umrechnung von Celsius nach Fahrenheit")
print("(c) Umrechnung von Kelvin nach Celsius")
print("(d) Umrechnung von Kelvin nach Fahrenheit")
print("(e) Umrechnung von Fahrenheit nach Celsius")
print("(f) Umrechnung von Fahrenheit nach Kelvin")

KBS= (input("Bitte einen Kennbuchstaben eingeben: "))             

if KBS == "a" or KBS == "b" or KBS == "c" or KBS == "d" or KBS == "e" or KBS == "f": 
    print("Eingabe OK")    
    
else:
    print("Neue Eingabe eines Kennbuchstaben")                         
    print("Bitte geben Sie einen Buchstaben von a bis f ein")
    KBS= (input("Bitte einen Kennbuchstaben eingeben: "))             
    
if KBS == "a" or KBS == "b" or KBS == "c" or KBS == "d" or KBS == "e" or KBS == "f":               
    KBS == "a"                                                                        
    if KBS == "a":
        Temperatur = float(input("Bitte die Temperatur in Celsius eingeben: "))              
            if Temperatur < -273.15:										[b]In dieser Zeile bekomm ich den Fehlercode: "unexpected indent"[/b]                                                  
                print ("Temperatur liegt unter dem absoluten 0 Punkt von -273.15°C")  
            else:                                                                                                        
                TemperaturK = Temperatur + 273.15:                                    
                    print(Temperatur, "°C = ",TemperaturK,"K")                        
                    
else:
    KBS == "b"
    if KBS == "b":
        Temperatur = float(input("Bitte die Temperatur in Celsius eingeben: "))
    else:
        print("Die Umrechnungen c,d,e,f sind noch nicht fertig.")
        
        if Temperatur < -273.15:
            print("Temperatur liegt unter dem absoluten 0 Punkt von -273.15°C")
        else:
            TemperaturF = 32 + 1.8 *Temperatur
            print(Temperatur, "°C = ",TemperaturF,"F")
Benutzeravatar
Dennis89
User
Beiträge: 1156
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

wieso ist die Zeile 22 weiter eingerückt, als 21?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Flashpoint
User
Beiträge: 3
Registriert: Mittwoch 4. Mai 2022, 17:27

Vielen Dank für die Antwort daran hat es wirklich gelegen :)
Bekomme aber leider noch eine Fehlermeldung in Zeile 25 "SyntaxError: invalid syntax" ...
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Dann schau doch mal ganz ans Ende dieser Zeile ;-)
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
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Ich habe mal deinem kleinen Programm etwas Struktur gegeben, damit du eine Basis hast auf der du aufbauen kannst. Ansonsten wird das ganze sehr unübersichtlich.
Wenn du noch nichts mit Funktionen gemacht hast, dann kannst du das halt später so verwenden.

Code: Alles auswählen

def get_key():
    while True:
        print("(a) Umrechnung von Celsius nach Kelvin")                  
        print("(b) Umrechnung von Celsius nach Fahrenheit")
        print("(c) Umrechnung von Kelvin nach Celsius")
        print("(d) Umrechnung von Kelvin nach Fahrenheit")
        print("(e) Umrechnung von Fahrenheit nach Celsius")
        print("(f) Umrechnung von Fahrenheit nach Kelvin")
        print("(x) Programm beenden")
        key = input("Bitte geben Sie einen Buchstaben von a bis f, oder x ein: ")
        if key in "abcdefx":
            return key

def celsius_to_kelvin():
    temperatur = float(input("Bitte die Temperatur in Celsius eingeben: "))              
    if temperatur < -273.15:                                               
        print ("Temperatur liegt unter dem absoluten Nullppunkt von -273.15°C")  
    else:
        print(f"{temperatur}°C = {temperatur + 273.15}°K")

def celsius_to_fahrenheit():
    temperatur = float(input("Bitte die Temperatur in Celsius eingeben: "))
    if temperatur < -273.15:
        print("Temperatur liegt unter dem absoluten Nullpunkt von -273.15°C")
    else:
        print(f"{temperatur}°C = {32 + 1.8 * temperatur}°F")

def main():
    while True:
        choice = get_key()
        if choice == "a":
            celsius_to_kelvin()
        if choice == "b":
            celsius_to_fahrenheit()
        if choice == "x":
            print("Auf Wiedersehen")
            break

if __name__ == "__main__":
    main()
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
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Einrückungen geben in Python an, was zu einem Block zusammengehört. Gerade bei langen, tief verschachtelten if-Abfragen kann man so etwas den Überblick bewahren. Z.b. zu welchem `if` gehört das `else` in Zeile 28? Es ist das if, das genauso weit eingerückt ist wie das else. Ist das so beabsichtigt?

In Zeile 8 sind die Klammern um den ganzen Ausdruck überflüssig. Benutze keine kryptischen Abkürzungen. Warum `KBS` und nicht `kennung` oder noch besser `auswahl`?
Variablennamen schreibt man in Python per Konvention komplett klein.
Die Vergleiche in Zeile 19 und 29 sind unsinnig, da mit dem Ergebnis nichts gemacht wird.
Beim Programmieren versucht man Dopplungen zu vermeiden: welche Auswahl erwartet als Eingabe die Temperatur in °Celsius? Die würde man dann in einem if-Block zusammenlegen und dann erst bei der Berechnung des Ergebnisses nochmal verzweigen.
Flashpoint
User
Beiträge: 3
Registriert: Mittwoch 4. Mai 2022, 17:27

Wow vielen lieben Dank damit kann ich wirklich sehr gut arbeiten, dankeschön :)
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@ThomasL: die if-Abfrage in `get_key` ist fehlerhaft, weil sie auch Eingaben wie "cde" durchläßt. Unter `key` verstehe ich etwas anderes, `get_choice` wäre passender, noch besser wäre natürlich `choose_conversion`.
Wenn man sich gegenseitig auschließende if-Anweisungen hat, wie in `main`, dann benutz man `elif`.
Antworten