如何从用户处获取boolean值并实现非法输入循环校验
循环获取合法布尔类型用户输入实现方案
核心逻辑是通过无限循环持续接收用户输入,对输入内容做合法性校验,只有输入符合布尔值格式要求时才退出循环返回结果,否则持续提示重新输入。
实现要点
- 用
while True构造常驻输入循环,未拿到合法值前不会跳出输入流程 - 对用户输入做标准化预处理:去除首尾空白字符、统一转为小写,避免因前后空格、大小写差异导致合法输入被误判
- 预先定义合法真值、假值的匹配规则,匹配成功则返回对应布尔类型值,匹配失败则打印错误提示重新触发输入
可直接运行的代码实现
def get_boolean_input(input_tip: str = "请输入True/False: ") -> bool: # 可根据需求调整合法输入范围,以下配置兼容常见的布尔类输入写法 true_input_set = {"true", "t", "1", "yes", "y"} false_input_set = {"false", "f", "0", "no", "n"} while True: # 预处理用户输入:去首尾空白、统一转小写 input_content = input(input_tip).strip().lower() if input_content in true_input_set: return True if input_content in false_input_set: return False # 输入非法时给出明确提示 print("输入不合法,请输入标准布尔值True/False后重试") # 调用示例 if __name__ == "__main__": check_result = get_boolean_input("请确认是否同意用户协议(True/False): ") print(f"校验通过,获取到的布尔值为{check_result},值类型为{type(check_result)}")
如果需要严格限制用户只能输入True/False,不接受其他简写变体,只需要把匹配集合修改为如下内容即可:
true_input_set = {"true"} false_input_set = {"false"}
内容的提问来源于stack exchange,提问作者vivek.raji
相关产品推荐
相关产品推荐

