Neuling-Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Time_O
User
Beiträge: 5
Registriert: Dienstag 18. Mai 2010, 19:43

Hallo miteinander :)

Ich bin relativ neu in Python und habe vor kurzem angefangen auch längere Programme zu schreiben.
Jetzt stehe ich aber vor meinem ersten Problem:

Wenn ich vom Benutzer eine Eingabe in der Form n = int(raw_input('Eingabe')) erwarte, gibt es einen Fehler wenn etwas anderes als eine Zahl eingegeben wird. Kann man das irgendwie umgehen ? Ich meine das in der Art, dass das Programm bevor es den input akzeptiert prüft, ob es sich um eine Zahl handelt und wenn das nicht so ist sowas wie 'bitte nur Zahlen eingeben' ausgibt.

Was ich mir so gebastelt hab:

n = raw_input('Eingabe')
if n == ( Hier wüsste ich nicht welcher Operator prüfen würde, ob n eine Zahl ist)
n = int(n) ( Ist das so richtig ? )
else:
print 'bitte nur Zahlen eingeben'

Wie gesagt, ich bin noch ziemlich unerfahren und hab vorher im Internet nach 'ner Lösung gesucht, wusste aber auch nicht recht, nach was ich suchen soll :(

MFG :?:
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Mit isdigit sollte es funktionieren. Bsp.:

Code: Alles auswählen

>>> "34".isdigit()
True
>>> "3P".isdigit()
False
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wobei auch der Weg über eine Exception durchaus pythonisch wäre:

Code: Alles auswählen

try:
    n = int(raw_input('Eingabe'))
except ValueError:
    print "Bitte geben Sie eine Zahl ein!"
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Häuft sich diese Frage in letzter Zeit, oder hab ich da bloß nie drauf geachtet?
Ich tu 'meine' Lösung mal zu den Code-snippets

hth, Jörg
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Time_O hat geschrieben:Wenn ich vom Benutzer eine Eingabe in der Form n = int(raw_input('Eingabe'))
Was hat dich bloß geritten dieses üble Türkis zu nehmen? :shock: Auf hellblau ist das ja wirklich gut zu erkennen… :K
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

``.isdigit()`` prüft ob ein String aus Ziffern besteht, nicht ob es eine Zahl ist.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Womit ``isdigit`` völlig ungeeignet ist:

Code: Alles auswählen

>>> '-34'.isdigit()
False
>>> ' 34'.isdigit()
False
Grüße
Gerrit
Antworten