Meminta Input Pengguna yang Sah Sehingga Diterima
Apabila meminta input pengguna, adalah penting untuk mengendalikan respons tidak sah dengan anggun dan bukannya ranap atau menerima nilai yang salah . Teknik berikut memastikan input yang sah diperoleh:
Cuba/Kecuali Input Luar Biasa
Gunakan cuba/kecuali untuk menangkap input tertentu yang tidak boleh dihuraikan. Contohnya:
while True: try: age = int(input("Please enter your age: ")) except ValueError: print("Sorry, that's not a valid age.") continue break
Pengesahan Tersuai untuk Peraturan Tambahan
Kadangkala, input yang boleh dihuraikan mungkin masih tidak memenuhi kriteria tertentu. Anda boleh menambah logik pengesahan tersuai untuk menolak nilai tertentu:
while True: data = input("Enter a positive number: ") if int(data) < 0: print("Invalid input. Please enter a positive number.") continue break
Menggabungkan Pengendalian Pengecualian dan Pengesahan Tersuai
Gabungkan kedua-dua teknik untuk mengendalikan kedua-dua parsing tidak sah dan peraturan pengesahan tersuai :
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
Pengenkapsulan dalam Fungsi
Untuk menggunakan semula logik pengesahan input tersuai, merangkumnya dalam fungsi:
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
Pembersihan Input Lanjutan
Anda boleh cipta fungsi input yang lebih generik untuk mengendalikan pelbagai pengesahan senario:
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
Fungsi ini membolehkan anda menentukan jenis data, julat dan kekangan lain untuk input pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Input Pengguna yang Sah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!