使用 Python 编写应用程序时,用户输入数据时可能是不可预测的,有时甚至是非常危险的。在本文中,介绍如何实现输入验证,反复提示用户输入有效,以确保应用程序安全可靠。
使用 try...excepttry...except 语句用于 Python 中的异常处理。该语句分为三个部分,有不同的用途。
try:含要测试可能包含错误的代码。except:添加异常和代码报错时的应对措施。finally:无论结果如何都要执行的代码。while True: try: num = int(input("请输入一个整数:")) break except ValueError: print("输入无效。请输入一个整数:")输出:
请输入一个整数:a输入无效。请输入一个整数:请输入一个整数:3.14输入无效。请输入一个整数:请输入一个整数:1使用 if 语句进行验证如果需要确保输入在一定范围内,可以使用 if 语句进行判断。
num = 0while True: try: num = int(input("请输入一个 1~10 的整数:")) except ValueError: print("输入无效。请输入一个 1~10 的整数:") continue if num >= 1 and num <= 10: print(f'你输入的是:{num}') break输出: 请输入一个 1~10 的整数:a输入无效。请输入一个 的整数:请输入一个 的整数:3.14输入无效。请输入一个 的整数:11请输入一个 的整数:9你输入的是:9使用正则表达式对于复杂的输入验证,例如确保电子邮件地址或电话号码格式正确,可以使用正则表达式 (regex)。 import redef validate_email(): while true: email="input("请输入电子邮件:" ") pattern="r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"" if re.match(pattern, email): return else: print("邮件地址格式不正确。")email="validate_email()print(f'你的输入是:{email}')自定义输入函数def" valid_input(prompt, valid_func): user_input="input(prompt)" valid_func(user_input): user_inputdef positive_number(input): try: number="float(input)"> 0: return True else: return False except ValueError: return Falsenum = valid_input("请输入一个正数:", positive_number)print("你输入的是:", num)在上面的示例中,自定义了一个输入函数 valid_input ,循环调用自定义的校验函数。校验函数可以根据实际情况进行更换。
禁止空字符def valid_input(prompt, valid_func): while True: user_input = input(prompt) if valid_func(user_input): return user_inputdef non_string(input): if input: return True else: return Falsename = valid_input("请输入昵称:", non_string)print("你输入的是:", name)校验输入长度def valid_input(prompt, valid_func): while True: user_input = input(prompt) if valid_func(user_input): return user_inputdef password(input): if len(input) >= 8: return True else: return Falsename = valid_input("请输入密码(不少于8位):", password)print("你输入的是:", name)校验特定输入def valid_input(prompt, valid_func): while True: user_input = input(prompt) if valid_func(user_input): return user_inputdef confirm(input): if input.lower() == 'yes' or input.lower() == 'no': return True else: return Falsename = valid_input("请确认(yes/no):", confirm)print("你输入的是:", name)