いくつかのコマンドを持つアプリケーションがあります。特定のコマンドを入力すると、何か/誰かに関する追加情報を入力する必要があります。その情報は、状況に応じて厳密に整数または文字列でなければなりません。
ただし、 raw_input() を使用して Python に入力したものは実際には文字列です。より具体的には、変数が数字または文字で構成されているかどうかを確認することを除いて、どうすれば簡単に試してみることができますか?
いくつかのコマンドを持つアプリケーションがあります。特定のコマンドを入力すると、何か/誰かに関する追加情報を入力する必要があります。その情報は、状況に応じて厳密に整数または文字列でなければなりません。
ただし、 raw_input() を使用して Python に入力したものは実際には文字列です。より具体的には、変数が数字または文字で構成されているかどうかを確認することを除いて、どうすれば簡単に試してみることができますか?
私の意見では、次の 2 つのオプションがあります。
に変換してみint
ますが、例外をキャッチします。
try:
value = int(value)
except ValueError:
pass # it was a string, not an int.
これがAsk Forgivenessアプローチです。
文字列に数字しかないかどうかを明示的にテストします。
value.isdigit()
str.isdigit()
True
文字列内のすべての文字が数字 ( 0
- ) の場合にのみ返されます9
。
unicode
/ Python 3のstr
同等の型はunicode.isdecimal()
/str.isdecimal()
です。すべての数字が実際の整数値を持つわけではないため、整数に変換できるのは Unicodeの 10 進数のみです (たとえば、 U+00B2 SUPERSCRIPT 2は数字ですが、10 進数ではありません)。
これは、Ask Permission アプローチ、または Look Before You Leap と呼ばれることがよくあります。
後者は、すべての有効なint()
値を検出するわけではありません。空白と+
および-
もint()
値に使用できるからです。最初の形式は喜ん' +10 '
で数値として受け入れますが、後者は受け入れません。
ユーザーが通常整数を入力すると予想される場合は、最初の形式を使用します。その場合、許可を求めるよりも許しを求める方が簡単 (かつ迅速) です。
短時間の定義に応じて、次のオプションのいずれかを使用できます。
try: int(your_input); except ValueError: # ...
your_input.isdigit()
parse
の反対のような使い方format
チェックしないでください。先に進んで、それが正しい入力であると想定し、そうでない場合は例外をキャッチします。
intresult = None
while intresult is None:
input = raw_input()
try: intresult = int(input)
except ValueError: pass