Wieso ist dieser Python-Code falsch?
Hallo! Ich lerne gerade Python und bin bei der type-Funktion.
Folgender Code ist falsch:
Beispiel_Variable = input("Bitte geben Sie etwas ein: ")
datentyp = type(Beispiel_Variable)
print("Es handelt sich bei Ihrer Eingabe um den Datentyp: " + datentyp)
Und folgender ist richtig:
Beispiel_Variable = input("Bitte geben Sie etwas ein: ")
datentyp = type(Beispiel_Variable)
print("Es handelt sich bei Ihrer Eingabe um den Datentyp:")
print(datentyp)
Warum kann ich also die Variable ,,datentyp" nicht in der gleichen Print-Funktion ausgeben lassen, wie den Text ,,Es handelt sich bei Ihrer Eingabe um den Datentyp:" ?
4 Antworten
"Es handelt sich bei Ihrer Eingabe um den Datentyp: " + datentyp
Hier versuchst du, auf ein Objekt vom Typ String und ein Objekt vom Typ "type" den Operator "+" anzuwenden. Der ist aber nicht dafür definiert. Du kannst nur Strings miteinander verketten. Somit wird eine Exception geworfen.
Das alles passiert, bevor überhaupt print() aufgerufen wird. Hat also damit nichts zu tun.
print(datentyp)
Das funktioniert. print() wendet auf jedes übergebene Objekt die Funktion str() an, wandelt es also in seine Stringrepräsentation um.
Was somit auch funktionieren würde:
print("Es handelt sich bei Ihrer Eingabe um den Datentyp:", datentyp)
Das liegt daran, dass du versuchst einen string und einen type mit einem + Operator zu verbinden, was nicht funktioniert. Du kannst nur zwei Strings auf diese Weise verbinden. Du kannst die Variable datentyp jedoch implizit konvertieren, das sieht dann so aus:
print: ("Es handelt sich bei ihrer Eingabe um den Datentyp: " + str(datentyp))
Die untere Möglichkeit funktioniert aber, weil die print()-methode mit jedem Datentyp umgehen kann, und den dann einfach konvertiert. Der Fehler kommt also nicht von dem printen, sondern von dem +Operator, der versucht zwei Strings zu verketten aber auf einen string und einen type stößt...
Jedoch wirst du nie etwas anderes zurückbekommen als 'str', denn die input()-Methode gibt dir nur einen string zurück, auch wenn nur Zahlen eingegeben werden...
print("Es handelt sich bei Ihrer Eingabe um den Datentyp: "(datentyp))
Du musst explizit nach string konvertieren
Die Fehlermeldung lautet:
TypeError: must be str, not type
Also funktioniert das hier.
x = "bla"
print(x + str(type(x))
Du musst es so ändern
Beispiel_Variable = input("Bitte geben Sie etwas ein: ")
print("Beispiel_ Variable")
print("Es handelt sich bei Ihrer Eingabe um den Datentyp: " + datentyp)
Da ist jemandem ein kleiner Fehler unterlaufen würde ich sagen. Habe alles mit comments versehen damit du weißt was du Falsch gemacht hast :
Beispiel_Variable = input("Bitte geben Sie etwas ein: ")
print(Beispiel_ Variable) #Für den aufruf von variablen darf der variblen name nicht als string gegeben werden
print("Es handelt sich bei Ihrer Eingabe um den Datentyp: " + str(type(Beispiel_Variable))) #Um den typ des datentypen zu bekommen rufen wir type() auf und konvertieren den typ dann zu einer string mit str() damit wir keinen type-error bekommen wenn der text ausgegeben werden soll.