Frage von TattiMatti, 41

Programmiersprache Python Hilfe?

Erstellen Sie die erforderlichen Python-Anweisungen, um mit der Funktion input eine Gleitkommazahl größer oder gleich Null über die Tastatur vom Benutzer eingeben zu lassen.Behandeln Sie dabei auch den Fall (try, except), dass der Benutzer keine gültige Gleitkommazahl eingibt (ValueError). Speichern Sie einen eingegebenen gültigen Zahlenwert in einer Variable zahl, die den Datentyp float haben soll. Wird keine gültige Gleitkommazahl eingegeben oder ist die eingegebene Gleitkommazahl negativ, so soll die Meldung „ungültige Zahleneingabe“ ausgegeben werden.

Also, meine Gedanken waren: try: x=float(input('wert: ') if x>=0: print('zahl') except ValueError: print("ungueltige Zahlenreihe")

Aber das geht schlecht. Es funktioniert auch, weii man integer eingibt. Wie mache ich das richtig?

Antwort
von xXFreddy, 26

Kleiner Nachtrag, du könntest z.b. mit 

zahl = input("zahl: ")
if isinstance(zahl, float):

prüfen ob die eingegebene Zahl ein Float ist 


Kommentar von TattiMatti ,

Danke! Aber wie kann ich dann mit dem Fehler versuchen und den abgangen?

Kommentar von xXFreddy ,

Naja, dann solltest du evtl nicht isinstance benutzen, und in diesem Fall wäre an deinem Code dann nichts weiter auszusetzen, denn wenn eine Buchstabe oder so eingegeben würde, greift dein try except, und da niemand explizit Integer verbietet und jeder Integer in ein Float konvertiert werden kann ist das egal...

Kommentar von TattiMatti ,

Ach ja, was ist isinstance? Gibt es andere Moeglichkeut zu prüfen?

Kommentar von xXFreddy ,

mit isinstance kannst du prüfen ob ein Objekt das du rein gibst (in meinem Fall "zahl") eine Instanz einer Klasse ist, also z.b selber ein objekt der klasse, oder auch einer unterklasse, dieser teil ist wichtig! Also du könntest type benutzen:

if type(zahl) == float
Kommentar von xXFreddy ,

oder du benutzt halt einfach try except, aber der Vorteil an isinstance ist das auch supclasses einbezogen sind,

Stell dir vor du hast zwei klassen:

class Fahrzeug:
    pass

# und Auto, Auto erbt von Fahrzeug

class Auto(Fahrzeug):
    pass




isinstance(Fahrzeug(), Fahrzeug)  # returns True
type(Fahrzeug()) == Fahrzeug # returns True
isinstance(Auto(), Fahrzeug) # returns True
type(Auto()) == Fahrzeug # returns False
Antwort
von xXFreddy, 27

Hey, 

laut Aufgabenstellung ist es egal ob du Integer eingeben lässt. Ein Int konvertiert in einen Float ist ja nur von 1 auf 1.0 

Jeder Int kann auch ein Float sein, aber nicht anders herum (außer du rundest dann bzw. wenn es konvertiert wird, wird gerundet ;) )


MfG 

Freddy

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten