Hallo,
Ich habe das Problem, dass ich gerne eine eingabe überprüfen möchte. Es soll gefragt werden, ob die Eingabe eine Zahl ist.
Kann mir jemand sagen, welchen Befehl ich eingeben muss???
Im Moment siehts bei mir so aus:
a = int (input ('Anzahl der Messreihen: '))
if a != int:
print ('Falsche Eingabe')
a = int (input ('Anzahl der Messreihen: '))
Ich hab einfach mal als Bedingung a!= int eingegeben. Dass das nicht gehen kann ist mir klar.
Danke schon mal
Kontrollabfrage, ob eine Zahl eingegeben wurde
1. Benutze bitte code-Tags, Leerzeichen sind bei Python signifikant und die gehen sonst verloren.
2. Wenn du python < Version 3 verwendest bitte raw_input statt input verwenden. Warum steht in der Doku zu input.
3. Hast du deinen Code wenigstens mal durchlaufen lassen und geguckt was passiert, wenn du keine Zahl eingibst? Vermutlich nicht, sonst hätte deine Frage anders ausgesehen.
2. Wenn du python < Version 3 verwendest bitte raw_input statt input verwenden. Warum steht in der Doku zu input.
3. Hast du deinen Code wenigstens mal durchlaufen lassen und geguckt was passiert, wenn du keine Zahl eingibst? Vermutlich nicht, sonst hätte deine Frage anders ausgesehen.
Danke für die schnelle Antwort!
Ich benutze Python 3.1
Ich hab das Programm durchlaufen lassen. Wenn ich etwas anderes als eine Zahl eingebe erhalte ich folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\Users\Horst\Desktop\Programm_259.py", line 3, in <module>
a = int (input ('Anzahl der Messreihen: '))
ValueError: invalid literal for int() with base 10: 'e'
Du hast geschrieben, dass ich raw_input verwenden soll. das funktioniert aber auch nicht so recht.
Ich benutze Python 3.1
Ich hab das Programm durchlaufen lassen. Wenn ich etwas anderes als eine Zahl eingebe erhalte ich folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\Users\Horst\Desktop\Programm_259.py", line 3, in <module>
a = int (input ('Anzahl der Messreihen: '))
ValueError: invalid literal for int() with base 10: 'e'
Du hast geschrieben, dass ich raw_input verwenden soll. das funktioniert aber auch nicht so recht.
raw_input bei Python 2.x
das sind codetags
das sind codetags
Code: Alles auswählen
try: int(x)
except ValueError: print 'error'
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Ganz simpel:
Code: Alles auswählen
if type(x) == int:
#x ist int
else:
#x ist kein int
wenn es das ist was du meintest.type(object)
Die Funktion type gibt den Datentyp der übergebenen Instanz object zurück.
Mein Python-Blog.
Hallo.
Da du 3.1 benutzt ist input schon der richtige Weg. Den Rest hat jbs ja schon verraten.
Aber die Fehlermeldung sagt doch eigentlich schon alles: "e" ist eben keine Zahl.
Wenn man schon der Meinung ist, dass man Typen testen will, was man eigentlich fast nie möchte, dann nicht mit "type" sondern mit "isinstance". Dann erkennt man auch Vererbung.
Sebastian
Da du 3.1 benutzt ist input schon der richtige Weg. Den Rest hat jbs ja schon verraten.
Aber die Fehlermeldung sagt doch eigentlich schon alles: "e" ist eben keine Zahl.
Und wie viel man doch falsch machen kannxpilz hat geschrieben:Ganz simpel:wenn es das ist was du meintest.Code: Alles auswählen
if type(x) == int: #x ist int else: #x ist kein int

Sebastian
Das Leben ist wie ein Tennisball.
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Ja, ich weiß nicht welche welche Art du nun benutzt, die von EyDu oder die von mir. Was EyDu sagt scheint mir nämlich ziemlich überzeugend type() nicht zu benutzen, obwohl ich davon in dem Bereich noch keine ahnung habe..
@EyDu: Das war jetzt die einzigste Methode typen zu prüfen, über die ich gelesen habe. So weit, viele Alternativen zu bilden, bin ich noch nicht. Wollte ich nur gesagt haben.
@EyDu: Das war jetzt die einzigste Methode typen zu prüfen, über die ich gelesen habe. So weit, viele Alternativen zu bilden, bin ich noch nicht. Wollte ich nur gesagt haben.
Mein Python-Blog.
Die werden beide nicht funktionieren, wenn er nicht wie in jbs Post angegeben die Ausnahme abfängt. Und wenn er das tut, ist die Abfrage des Typs sowieso überflüssig, da es dann nur int sein kann.xpilz hat geschrieben:Ja, ich weiß nicht welche welche Art du nun benutzt, die von EyDu oder die von mir. Was EyDu sagt scheint mir ziemlich überzeugend type() nicht zu benutzen, obwohl ich davon noch keine ahnung habe..
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Ich denke mal, da sind wir gleich auf. Ohne HIlfe hätte ich es nämlich auch so ähnlich gemacht wie du.
Um aber jbs,EyDu und Darii mit einzubeziehen würde ich sagen, das diese Version besser ist, aber aus welchem Grund müssten dir andere erklären :/.
Um aber jbs,EyDu und Darii mit einzubeziehen würde ich sagen, das diese Version besser ist, aber aus welchem Grund müssten dir andere erklären :/.
Das Beispiel von jbs nur ein wenig verändert. Ich hoffe das ist nicht so wichtig.jbs hat geschrieben:Code: Alles auswählen
x = input('Anzahl der Werte: ') try: int(x) except ValueError: print 'Falsche Eingabe.'
Mein Python-Blog.
@Horst: Dein Code kann nicht funktionieren. a ist immer ein String und damit ist die Bedinung des while immer false. Eine Typumwandlung findet nirgends statt.
Für eine genaue Erklärung suchst du mal nach dem EAFP- und dem LBYL-Prinzip. Ersteres wird in Python vorgezogen. Ganz grob ausgedrückt: Gehe erstmal davon aus, dass der normale/erwartete Programmfluss genommen wird, wenn nicht, dann reagiere. LBLY geht das Problem aus der anderen Richtung an.
Erstmal, weil sie funktioniertxpilz hat geschrieben:Um aber jbs,EyDu und Darii mit einzubeziehen würde ich sagen, das diese Version besser ist, aber aus welchem Grund müssten dir andere erklären :/.

Das Leben ist wie ein Tennisball.
Code: Alles auswählen
while True:
a = input ('Anzahl der Messreihen: ')
try:
a = int(a)
except ValueError:
print('Falsche Eingabe')
else:
break
the more they change the more they stay the same
Da stehst du aber relativ alleine auf deiner SeiteMad-Marty hat geschrieben:String eingeben und dann String Method .isdigit() benutzen
Werf ich einfach mal so rein, ist imo der "richtige" weg.

Das Leben ist wie ein Tennisball.
the more they change the more they stay the same
-
- User
- Beiträge: 1
- Registriert: Samstag 23. Dezember 2017, 19:01
Ich würde einfach direkt nur eine Eingabe als Integer zulassen. Das geht mit:
Code: Alles auswählen
Eingabe = int(input("Eingabe:"))
- noisefloor
- User
- Beiträge: 4187
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@STROMBREAKER: das ist schlechtweg falsch. Du kannst _alles_ eingeben - nur bekommst du eine Exception, wenn die Umwandlung nach Integer nicht funktioniert. Das wurde aber vor 7,5 Jahren in diesem Thread schon festgestellt...
Gruß, noisefloor
@STROMBREAKER: das ist schlechtweg falsch. Du kannst _alles_ eingeben - nur bekommst du eine Exception, wenn die Umwandlung nach Integer nicht funktioniert. Das wurde aber vor 7,5 Jahren in diesem Thread schon festgestellt...
Gruß, noisefloor