受信するまで有効なユーザー入力を要求する
ユーザー入力を要求するときは、クラッシュしたり間違った値を受け入れたりするのではなく、無効な応答を適切に処理することが重要です。次の手法により、有効な入力が確実に取得されます。
例外入力の Try/Except を実行
解析できない特定の入力をキャッチするには、try/Except を使用します。例:
while True: try: age = int(input("Please enter your age: ")) except ValueError: print("Sorry, that's not a valid age.") continue break
追加ルールのカスタム検証
場合によっては、解析できる入力が特定の基準を満たさない場合があります。カスタム検証ロジックを追加して、特定の値を拒否できます。
while True: data = input("Enter a positive number: ") if int(data) < 0: print("Invalid input. Please enter a positive number.") continue break
例外処理とカスタム検証の組み合わせ
両方の手法を組み合わせて、無効な解析ルールとカスタム検証ルールの両方を処理します。 :
while True: try: age = int(input("Please enter your age: ")) except ValueError: print("Sorry, that's not a valid age.") continue if age < 0: print("Invalid age. Please enter a positive number.") continue break
でのカプセル化関数
カスタム入力検証ロジックを再利用するには、それを関数にカプセル化します。
def get_positive_age(): while True: try: age = int(input("Please enter your age: ")) except ValueError: print("Sorry, that's not a valid age.") continue if age < 0: print("Invalid age. Please enter a positive number.") continue return age
高度な入力サニタイズ
さまざまな検証を処理するためのより汎用的な入力関数を作成します。シナリオ:
def get_valid_input(prompt, type_=None, min_=None, max_=None, range_=None): while True: try: value = type_(input(prompt)) except ValueError: print(f"Invalid input type. Expected {type_.__name__}.") continue if max_ is not None and value > max_: print(f"Value must be less than or equal to {max_}.") continue if min_ is not None and value < min_: print(f"Value must be greater than or equal to {min_}.") continue if range_ is not None and value not in range_: template = "Value must be {}." if len(range_) == 1: print(template.format(*range_)) else: expected = " or ".join(( ", ".join(str(x) for x in range_[:-1]), str(range_[-1]) )) print(template.format(expected)) else: return value
この関数を使用すると、ユーザー入力のデータ型、範囲、その他の制約を指定できます。
以上がPython で有効なユーザー入力を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。