Frage von frankunderwood, 51

Wie kann ich mit Variabeln in Python rechnen?

Ich möchte gerne diese Rechnung in Python ausführen:

if x == 0:
    if b >= a + k:
        x = 1
        g = v - b
        p = g + p

Bei den unteren 2 kommt aber immer die Fehlermeldung: "TypeError: unsupported operand type(s) for -: 'int' and 'str'". Wie kann ich das lösen? Vielen Dank :-)

Antwort
von 3v1lH4x0R, 15

Der Fehler steckt nicht direkt in den Zeilen die du geschickt hast.
Er besteht darin dass du eine Zahl und einen String (Zeichenkette) versuchst zu addieren. Dies kann nur Fehlschlagen.

Ich gehe davon aus, dass du eine Nutzereingabe verwendest. Dein Code wird wahrscheinlich in etwa wie dieser aussehen:
a = raw_input("Bitte geben Sie eine Zahl ein: ")
Versuch ihn durch folgenden Code zu ersetzen:
a = int(raw_input(" Bitte geben Sie eine Zahl ein: "))

Wenn du int() auf einen String anwendest versucht Python diesen in eine Zahl umzuwandeln. Dein Fehler wird nun also nicht mehr auftreten.

Falls der String jedoch leer ist ("") oder Buchstaben enthält tritt ein anderer Fehler auf. Um dies zu vermeiden versuche folgenden Code:
try: a = int(raw_input(" Bitte geben Sie eine Zahl ein: "))
except: __import__("ctypes").user32.MessageBoxA(0, "Fehler", " Sie haben nicht alle Felder korrekt ausgefüllt.", 0)

Dies fängt den Fall, dass nicht alles ausgefüllt wurde und den Fall, dass keine Zahl eingegeben ab und gibt eine entsprechende Fehlermeldung in Form einer Benachrichtigung an.

Falls du noch Fragen hast, hau raus.

Kommentar von frankunderwood ,

Vielen vielen Dank, jetzt habe ich es verstanden. Gute Nacht

Kommentar von 3v1lH4x0R ,

Dir auch eine gute Nacht. Und träum was süßes.

Kommentar von 3v1lH4x0R ,

Es ist übrigens __import_,("ctypes").windll.user32.MessageBoxA(...)

Antwort
von xXFreddy, 19

Hey,

Also "Gooooooogle" trifft es soweit schon ganz gut. ;)
Das Problem steht ja schon in der Fehlermeldung:
du versuchst einen String (Zeichenfolge, z.B. a = "4") mit einem INT (Ganzzahl; z.B. b = 5) zu addieren oder subtrahieren, heißt, du musst deine Variablen einfach in den richtigen Typ (z.B. INT) konvertieren. Das lässt sich ganz einfach googlen ;)

Je nachdem wie du die Variablen befüllst gleich zu Anfang.

MfG
Freddy

Keine passende Antwort gefunden?

Fragen Sie die Community