Python Programmierung Schleife?

3 Antworten

Von Experte ralphdieter bestätigt

"Ich finde den Fehler nicht" ist echt gut. Da sind so viele Fehler drin, dass man kaum erraten kann, was du überhaupt vorhast.

Also anscheinend soll der Funktion im Parameter "i_zahl" übergeben werden, ob ints oder floats eingelesen werden sollen. Nenne den Parameter am besten in "typ" um, damit man gleich weiß, wofür er gut ist.

Und dann soll in einer Schleife ganz oft eine Zahl des jeweiligen Typs eingelesen werden. Was soll dann mit den Zahlen passieren? So wie es jetzt ist, wird einfach die Variable i_zahl immer wieder mit der neuesten Eingabe überschrieben (allerdings nur bei den ints. Bei den floats wird nur der Text ausgegeben, dass man was eingeben soll)

Ich schreibe mal ein paar Kommentare in deinen Code:

def Gleitpunktzahl_schleife (i_zahl): 
# Laut Codeconvention sollte man Funktionsnamen immer klein 
# schreiben, damit man sie besser von Klassennamen unterscheiden kann.
  if (i_zahl) == 'int': # Ich bin mir nicht ganz sicher, ob du 
                        # wirklich prüfen willst, ob der Text
                        # "int" übergeben wird, oder ob du 
                        # eigentlich prüfen wolltest, ob die 
                        # übergebene Zahl ein int ist

  while (i_zahl)True:   # Die Bedingung macht keinen Sinn
                        # Sollen Zahlen eingelesen werden, bis
                        # eine 0 eingegeben wird? Oder bis nichts
                        # mehr eingegeben wird?
                        # Außerdem fehlt hier die Einrückung.
                        # So weiß Python nicht, wo der Block
                        # anfängt und aufhört
      (i_zahl) = int(input("\n\n\tGeben Sie eine Gleitpunktzahl ein (Abbruch mit Enter): "))
# Du schreibst "Geben Sie eine Gleitpunktzahl ein", aber wandelst
# sie dann in ein int um!? Außerdem verschwinden die eingegebenen
# Zahlen im Nirvana. Was soll denn mit den eingegebenen Zahlen
# passieren? Sollen die in eine Liste? Sollen die verarbeitet
# werden?
  else # Der Doppelpunkt fehlt
i_zahl != 'int' # Die Einrückung ist falsch. Außerdem bewirkt
                # diese Zeile nichts. Ich schätze mal, du 
                # wolltest das als zusätzliche Bedingung für das
                # else angeben. Brauchst du aber nicht.
                # "else" bedeutet: Wenn die Bedingung beim if
                # nicht zutrifft, dann führe stattdiesen diesen
                # Teil aus.
    print("\n\n\tBitte geben Sie eine integer Zahl ein")
    # Hier schreibst du, dass eine Integer-Zahl eingegeben werden
    # soll, aber du benutzt kein Input
        break # was soll das break? Die Funktion ist hier eh
              # zu Ende. Außerdem stimmt die Einrückung
              # auch nicht. Das break ist ja kein Codeblock, der
              # vom print gesteuert werden kann.

Hier ist mal der Code von dem ich glaube, dass du ungefähr sowas vorhast:

def gleitpunktzahl_schleife(typ):
    ergebnis = []
    if typ == "int":
        while True:
            input_string = input("\n\n\tBitte geben Sie eine Integer-Zahl ein: ")
            if input_string == "": break
            ergebnis.append(int(input_string))
    else:
        while True:
            input_string = input("\n\n\tBitte geben Sie eine Gleitkommazahl ein: ")
            if input_string == "": break
            ergebnis.append(float(input_string))
    return ergebnis
NackterGerd  05.05.2023, 08:46

Ok so habe ich den Code nicht verstanden, aber wäre natürlich eine gute Lösung.

Die Fragestellung ist ja auch kaum nachvollziehbar bei so vielen Fehlern

1

Erstens fehlt bei dem else ein : es muss heißen

else:

"Code"

Und vielleicht anstatt

elif condition:

daChypher hat ja schon eine sinnvolle antwort zum code gegeben. Daher möchte ich nur eine sache zum Fragen Stellen über das Thema Programmieren einstelle.

Bitte gib beim fragenstellen auch immer die fehlermeldungen an die ausgegeben werden. Das kann helfen zu identifizieren was genau das problem ist.

Falls das Programm sich unerwartet verhält. Bitte immer eine beschreibung angeben (aus sicht des Users reicht es denke ich) was du erwartest das passieren sollte wenn der User etwas bestimmtes macht.

Und was in wirkichkeit passiert wenn der user was bestimmtes macht.

Beide sachen helfen ungemein um Fehler zu verstehen und wirklich helfen zu können. Ansonsten muss man oft die dinge schlichtweg einfach erfragen.

Und ein weiterer tipp noch. Ich weiss jetzt nicht ob du dicht nach daChyphers antwort privat noch mit daCypher unterhalten hast oder nicht. Aber generell ist es gut auf die antworten einzugehen. Insbesondere wenn sich aus der Frage nen Haufen Detailfragen ergeben. Ein reines wiedereinstellen wird dir da weniger bringen weil menschen schlecht gedankenlesen können.