コンテンツにスキップ

Python整数の入力方法と修正-簡単解説

[

Pythonで整数の入力を受け取る方法

Pythonで対話的なテキストベースのアプリケーションをコーディングしたことがあるなら、おそらくユーザーから整数を入力するための信頼性のある方法が必要になることに気付いたでしょう。単にプロンプトを表示してキーストロークを集めるだけでは十分ではありません。ユーザーの入力が実際に整数を表していることを確認する必要があります。もし整数を表していない場合は、通常はプロンプトを繰り返すことで適切に対応する必要があります。

このチュートリアルでは、対話的なユーザーからの入力に対して、有効な整数のみを保証する「再利用可能なユーティリティ関数」を作成する方法を学びます。その過程で、Pythonのコンソールから文字列を取得し、その文字列を整数に変換するためのツールについても学びます。

キーボードと対話するプログラムを書いている場合は、無効な入力を管理するために防御的なコードを記述する必要があります。そのため、この状況に対処する最もPythonicな方法も学びます。エラーを確実に処理し、整数以外のものを返さないことが保証された関数の中で、エラーに対処します。

Pythonで整数の入力値を取得する方法

Pythonの標準ライブラリには、ユーザーから文字列の入力を取得するための「input()」関数が組み込まれています。この関数を使用する前に、Python 3のバージョンであることを再確認してください。なぜそれが重要なのかを学びたい場合は、以下の折りたたみセクションを確認してください:

Python 2の「input()」関数に注意する必要がある理由を表示/非表示する

この問題のため、Python 2では「raw_input()」関数がより安全な代替手段として提供されていましたが、無邪気なプログラマがより明らかな「input()」を選択するリスクが常に存在しました。

Python 3では、「raw_input()」は「input()」に名前が変更され、古いリスクのあるバージョンの「input()」は削除されました。このチュートリアルではPython 3を使用するので、この落とし穴は心配ありません。

Python

>>> number_as_string = input("Please enter an integer: ")
Please enter an integer: 123
>>> number_as_integer = int(number_as_string)
>>> print(f"The value of the integer is {number_as_integer}")
The value of the integer is 123

上記のコードスニペットが実行されると、インタプリタはinput()関数で一時停止し、ユーザーに整数を入力するようにプロンプトを表示します。プロンプトの最後に点滅するカーソルが表示され、システムはユーザーが任意の文字列を入力するのを待ちます。

ユーザーがEnterキーを押すと、関数は改行のない文字列を返します。受け取った値が文字列であることを忘れないように、受け取る変数をnumber_as_stringと名付けました。

次の行では、number_as_stringを整数として解析し、結果をnumber_as_integerに格納します。変換を行うためにint()クラスコンストラクタを使用しています。最後に、print()関数で結果を表示します。

無効な入力に対処する方法

上記のコードが楽観的すぎることに既に気づいているかもしれません。常に有効な入力を受け取れるわけではありません。

整数ではない値を受け取った場合、変換に失敗し、PythonはValueError例外をスローします。例外が発生すると、ユーザーにエラーメッセージを表示し、もう一度入力を促すことができます。

以下のコードスニペットは、無効な入力値に対処する方法を示しています:

Python

while True:
number_as_string = input("Please enter an integer: ")
try:
number_as_integer = int(number_as_string)
break
except ValueError:
print("Invalid input. Try again.")

これにより、無効な入力を処理し、ユーザーにフィードバックを提供できます。ループが繰り返されるたびにユーザーが正しい形式の整数を入力するまで、エラーメッセージが表示され続けます。

有効な整数の入力をフィルタリングする

先ほどの方法では、入力が整数に変換できるかどうかを確認していますが、それに対して特定の制約を加える必要がある場合もあります。例えば、負の値を受け入れない場合や、特定の範囲内の値のみを受け入れる場合などです。

このような場合には、受け取った入力値をフィルタリングする方法が必要になります。Pythonでは、このタスクを簡単に処理できるさまざまな方法があります。

以下のコードスニペットでは、受け取った入力値が負の値である場合に再試行を促すようにループを追加しています:

Python

while True:
number_as_string = input("Please enter a positive integer: ")
try:
number_as_integer = int(number_as_string)
if number_as_integer > 0:
break
else:
print("Invalid input. Please enter a positive integer.")
except ValueError:
print("Invalid input. Please enter a positive integer.")

このようにフィルタリングすることで、入力値が特定の条件を満たすかどうかを簡単に確認できます。

有効な整数を読み取るためのユーティリティ関数を作成する

先ほどの手法は、1つの整数の入力に対して適用されますが、同じ処理を複数回繰り返したり、異なる部分で使用したりする場合、コードを繰り返し記述する必要が生じます。

このような場合、再利用可能なユーティリティ関数を作成することが効果的です。この関数は整数の入力を受け取り、有効な整数が入力されるまで繰り返し促すようにすることができます。

以下のコードスニペットは、read_positive_integer()というユーティリティ関数を作成する方法を示しています:

Python

def read_positive_integer(prompt):
while True:
number_as_string = input(prompt)
try:
number_as_integer = int(number_as_string)
if number_as_integer > 0:
return number_as_integer
else:
print("Invalid input. Please enter a positive integer.")
except ValueError:
print("Invalid input. Please enter a positive integer.")

この関数は、プロンプトを受け取り、有効な正の整数を返します。無効な入力があった場合はエラーメッセージを表示し、もう一度入力を促すようにします。

この関数を使用すると、以前のコードと同様の機能を持つ処理を簡単に書くことができます。例えば、次のようにして使うことができます:

Python

number = read_positive_integer("Please enter a positive integer: ")
print(f"The value of the integer is {number}")

このコードでは、read_positive_integer()関数を使用して、ユーザーに正の整数を入力してもらいます。正しい整数が入力された場合は、その整数を表示します。

結論

このチュートリアルでは、Pythonで整数の入力を受け取る方法について学びました。input()関数を使用して文字列の入力を取得し、int()関数を使用して整数に変換することで、ユーザーから有効な整数を取得する方法を学びました。

また、無効な入力に対処する方法や入力値をフィルタリングする方法についても学びました。さらに、再利用可能なユーティリティ関数を作成することで、有効な整数の入力を効率的に処理する方法も学びました。

この知識を活用することで、Pythonで対話的なアプリケーションを作成する際に、ユーザーから整数の入力を安全かつ効果的に受け取ることができるでしょう。

次のステップ

Pythonで整数の入力を受け取る方法について学びましたが、まだまだ学ぶことはたくさんあります。以下は、次に取るべきステップのいくつかです:

  • Pythonの入力をフィルタリングし、制約を追加する方法について学ぶ

これらのトピックを学ぶことで、より高度なPythonプログラムの作成に役立てることができます。Pythonを使ったアプリケーションやプロジェクトを開発する際に、この知識を活用してください。