私は、自分のインタフェースのテキストボックスの文字列が数値であるかどうか(つまり、テキストではないものなど)を評価しようとしています。 Pythonには、isdigit()というメソッドがあります。このメソッドは、文字列に数字(負の符号や小数点は含まない)だけが含まれている場合にTrueを返します。文字列が有理数(例:1.25)であるかどうかを評価する別の方法がありますか?isDigit()ですか?
例コード:リテラルは、変換が失敗した場合
私は、自分のインタフェースのテキストボックスの文字列が数値であるかどうか(つまり、テキストではないものなど)を評価しようとしています。 Pythonには、isdigit()というメソッドがあります。このメソッドは、文字列に数字(負の符号や小数点は含まない)だけが含まれている場合にTrueを返します。文字列が有理数(例:1.25)であるかどうかを評価する別の方法がありますか?isDigit()ですか?
例コード:リテラルは、変換が失敗した場合
1.25は、realsで一般的に使用されている表記法であり、rational numbersでは少ないです。 Pythonのfloatは、変換が失敗したときにValueErrorを発生させます。したがって:
def isReal(txt):
try:
float(txt)
return True
except ValueError:
return False
は、INT()またはフロート()とValueErrorをスロー。文字列を浮動小数点に変換し、ValueError
をキャッチしてみてください。
float()
はValueError
をスロー有効でない場合
if self.components.txtZoomPos.text.isdigit():
step = int(self.components.txtZoomPos.text)
try
/catch
はPythonで非常に安くなって、その数はありません文字列からfloat
を構築しようとすると、例外が発生します:
>>> float('1.45')
1.45
>>> float('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): foo
あなただけのような何かを行うことができます
try:
# validate it's a float
value = float(self.components.txtZoomPos.text)
except ValueError, ve:
pass # your error handling goes here
多くのPythonの方法が通常try...except
(つまりEAFP)になるという点で既存の回答は正しいです。 。
実際に検証を行いたい場合は、isdigit()
を使用する前に正確に1つの小数点を削除することができます。
>>> "124".replace(".", "", 1).isdigit()
True
>>> "12.4".replace(".", "", 1).isdigit()
True
>>> "12..4".replace(".", "", 1).isdigit()
False
>>> "192.168.1.1".replace(".", "", 1).isdigit()
False
ただし、これは浮動小数点数をintとは異なるものとして扱うことに注意してください。あなたは本当にそれが必要な場合は、そのチェックを追加することができます。
いいえ、あなたが標準的な数学の名前を使うと、それは両方です。実数の行は有理数と非合理的な数で構成され、有理数の行はaとbが整数である 'a/b'の形式で表すことができる整数と数値です。 – workmad3
@ workmad3:あなたは正しいですから、回答をすばやく更新しました(残念ながら、あなたがそれを見た後に)) – Stephan202
+1、回答が出たときに同じことを入力していました。ああ!担当者のポイントを逃した! – PTBNL