コンテンツにスキップ

Python入力: 簡単にint型を使う方法

[

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

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

Python 2のinput()関数に注意が必要な理由を表示/非表示

Python 2のバージョンのinput()関数は、呼び出し元のプログラムがそれを検証する前に、インタプリタが関数によって返される文字列を実行してしまうため、安全ではありませんでした。これにより、悪意のあるユーザーが任意のコードをプログラムに挿入することができました。

この問題のため、Python 2では、より安全な代替手段としてraw_input()関数が提供されていましたが、気の抜けたプログラマーがより明らかな名前のinput()を選ぶ可能性があるリスクは常にありました。

Python 3ではraw_input()input()に改名し、古いバージョンの危険なinput()を削除しました。このチュートリアルではPython 3を使用するため、この落とし穴は心配ありません。

Python 3では、input()関数は文字列を返すため、それを整数に変換する必要があります。文字列を読み取り、それを整数に変換し、結果を3行で表示することができます。

number_as_string = input("整数を入力してください: ")
number_as_integer = int(number_as_string)
print(f"整数の値は{number_as_integer}です")

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

ユーザーがEnterキーを押すと、関数は改行なしで、入力した文字列を含む文字列を返します。受信した値が文字列であることを思い出すために、受信変数をnumber_as_stringと名付けました。

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

無効な入力の処理

上記のコードは非常に楽観的です。ユーザーが常に整数を入力するわけではありません。実際のアプリケーションでは、不正な入力に対処する必要があります。以下のコードは、ユーザーが整数以外の何かを入力した場合に表示するエラーメッセージを含んでいます。

while True:
number_as_string = input("整数を入力してください: ")
try:
number_as_integer = int(number_as_string)
print(f"整数の値は{number_as_integer}です")
break
except ValueError:
print("不正な入力です。整数を入力してください")

上記のコードは、無限ループ内で input()関数が実行されることにより、ユーザーが整数を入力するまでプロンプトが繰り返し表示されるというものです。int()の変換が成功した場合は、整数の値が表示され、ループを終了します。int()の変換が失敗した場合は、ValueErrorが発生し、エラーメッセージが表示されるので、ユーザーは再度整数を入力するように促されます。

これにより、ユーザーが整数を入力するまで続行することが保証されます。

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

前の例では、int()関数によって整数に変換できない入力が与えられると、ValueErrorが発生し、プログラムがクラッシュします。代わりに、有効な整数の入力のみを受け入れるように、フィルタリング機能を追加することができます。次のコードでは、int()関数を使用した代わりに、str.isdigit()メソッドを使用して入力を整数に変換しています。

while True:
number_as_string = input("整数を入力してください: ")
if number_as_string.isdigit():
number_as_integer = int(number_as_string)
print(f"整数の値は{number_as_integer}です")
break
else:
print("不正な入力です。整数を入力してください")

上記のコードでは、isdigit()メソッドを使用して、入力された文字列がすべて数値であるかどうかを確認しています。数値であれば、int()関数を使用して文字列を整数に変換し、結果を表示します。数値でない場合は、エラーメッセージが表示され、再度整数の入力が求められます。

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

上記のコードは、有効な整数の入力を取得するための基本的な手法を示しています。ただし、この機能を再利用するために、ユーティリティ関数を作成することができます。次のコードは、有効な整数の入力を取得するためのユーティリティ関数の作成方法を示しています。

def get_valid_integer_input(prompt: str) -> int:
while True:
input_string = input(prompt)
if input_string.isdigit():
return int(input_string)
print("不正な入力です。整数を入力してください")
number = get_valid_integer_input("整数を入力してください: ")
print(f"入力された整数は{number}です")

上記のコードでは、get_valid_integer_input()という名前のユーティリティ関数を定義しています。この関数は、プロンプトを受け取り、有効な整数の入力がされるまで繰り返し入力を求めます。有効な入力がされた場合は、整数として変換して返します。無効な入力がされた場合は、エラーメッセージを表示し、再度入力を求めます。

この関数を使用すると、次のように簡単に有効な整数の入力を取得できます。

number = get_valid_integer_input("整数を入力してください: ")
print(f"入力された整数は{number}です")

結論

このチュートリアルでは、Pythonでユーザーから整数の入力を受け取る方法について学びました。input()関数を使用して文字列を受け取り、それをint()関数を使用して整数に変換することができます。また、無効な入力に対処するためのエラーハンドリングの方法や、有効な整数の入力のみを受け入れる方法を学びました。

さらに、ユーティリティ関数を作成することで、有効な整数の入力を簡単に取得することができるようになります。

次のステップとしては、これらの機能を使って、より複雑なアプリケーションで整数の入力を処理する方法を学ぶことができます。