Hi,
ich habe ein Python-Skript geschrieben, das eine Eingabe mit raw_input() vordert und mit dieser dann weiterrechnet. Ich brauch unbedingt eine Zahl als Eingabe. Wie kann ich die Ausführung des Skriptes stoppen, bzw. nochmals nachfragen, falls keine Zahl eingegeben wurde?
Eingabe validieren
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Zumindest unter python 2.6.x funktioniert folgendes:
Wie das mit python 3.x aussieht kann ich nicht sagen.
Code: Alles auswählen
>>> t1="123456"
>>> t2="1a2b3c"
>>> t1.isdigit()
True
>>> t2.isdigit()
False
>>>
Wobei das eventuell gültige Zahlen zurückweist:
Code: Alles auswählen
In [338]: '-42'.isdigit()
Out[338]: False
In [339]: ' 42'.isdigit()
Out[339]: False
try und except....
Code: Alles auswählen
>>> def ist_zahl(zahl):
try:
float(zahl)
except ValueError:
return False
return True
>>> ist_zahl('-452')
True
>>> ist_zahl('hgdsfjd')
False
>>>
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
Die Validierung kann man ja gleich in die eingabe einauen:
hth, Jörg
Code: Alles auswählen
#! /usr/bin/env python2.6
# coding: utf-8
import decimal
def read_input(msg="", converter=int, error_msg="Try again"):
while True:
try:
return converter(raw_input(msg))
except ValueError:
print error_msg
if __name__ == "__main__":
# Kurze demo:
print read_input("Int:")
print read_input("Float:", float)
print read_input("Complex:", complex)
print read_input("Decimal:", decimal.Decimal)
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
@Pascal: Die Funktion macht das Validieren aber nur umstaendlicher und hat keinen Mehrwert gegenueber der direkten Anwendung
Zumal man dann immernoch an den Wert muss.
Code: Alles auswählen
try:
value = float(input_)
except ValueError, e:
print cry()
else:
print be_happy()
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte