ユーザー入力からそれがどのタイプかを確認する方法はありますか? そして次のようにします:
if input == str:
do this
elif input == int:
do this
else:
do this
ユーザー入力からそれがどのタイプかを確認する方法はありますか? そして次のようにします:
if input == str:
do this
elif input == int:
do this
else:
do this
何かのタイプをチェックするために使用できますisinstance
-しかし、おそらくこれを行いたくないでしょう...
これは、ユーザーからの入力をどのように取得しているかにも大きく依存します。を使用している場合raw_input
は、常に文字列であり、必要try
な型に変換する必要があります。
try:
x = int(input):
except ValueError:
try:
x = float(input):
except ValueError:
print "No recognizable type!"
Python の基本原則の 1 つはダックタイピングです。オブジェクトがアヒルのように見え、アヒルのように聞こえ、アヒルのようなにおいがする場合、それはアヒルです (オブジェクトがどのように見え、においがし、どのように聞こえるかだけを気にする場合)。最終的に、Python では、try
それが「アヒル」であるかどうかを確認するのが最善です。アヒルでない場合は、例外をキャッチして処理します (方法がわかれば)。isinstance
これが、人々が自分のコードであまり使用しない主な理由であり、私がそれを使用しないように警告する理由です。
キーボード入力を意味する場合、すべての入力は文字列です。ユーザーが「88」のような数値を入力しても、結果は"88"
整数ではなく文字列になり88
ます。ただし、このパターンを使用して、文字列に数字のみが含まれているかどうかを判断できます。
if input.isdigit():
print "input is a number"
else:
print "input is not a number"
さらに良いのは、入力を数値にキャストすることです。これは、コメントに記載されているように、「50.0」や「-10」などの入力を処理します (小数が有効な場合は、ここで int() の代わりに float() または Decimal() を使用します)。 ):
try:
number = int(input)
except ValueError:
print "input is not a number"
キーボード入力について言及していない場合は、型をチェックするさまざまな方法がありますが、一般的に最善の方法は、入力を有効であるかのように使用し、有効でない場合に発生する例外をキャッチすることです。このようにして、入力要件をオブジェクトの実際のメソッドと属性の観点から定義し、単なる名目上のクラスではありません (これは「ダック タイピング」です)。
http://docs.python.org/2/library/functions.html#isinstanceを使用できますisinstance
例
isinstance('hello', str)
True を返します
を探していると思いますisinstance
。
あなたは私を打ち負かしましたが、私のものにはリンクが付いています:
http://docs.python.org/2/library/functions.html#isinstance
余談ですが、私は PyCharm IDE をテストしてきましassert isinstance()
た。コード内にある場合は自動的に型チェックを行い、自動補完を行います。また、docstring で型引数を指定することもできます。次に、このタイプ情報を使用して、今後のオートコンプリートを支援します。かなり便利...
isinstance(input, type)
type
組み込み関数でも同じことができますが、isinstance()
組み込み関数はオブジェクトの型をテストするために推奨されます。