Python多输入场景下抛出自定义ValueError并循环重提示的实现方法
正确实现代码
while True: try: input1, input2 = input("请输入两种披萨的名称,用空格分隔:").split() # 可根据需求添加额外校验逻辑,比如禁止空输入 if not input1.strip() or not input2.strip(): raise ValueError("披萨名称不能为空") # 输入符合要求,跳出循环执行后续逻辑 break except ValueError as err: # 处理解包失败的系统报错,替换为自定义提示 err_msg = str(err) if "not enough values to unpack" in err_msg: print("输入错误:你只输入了1种披萨,请输入恰好2种,用空格分隔") elif "too many values to unpack" in err_msg: print("输入错误:你输入了超过2种披萨,请输入恰好2种,用空格分隔") else: print(f"输入错误:{err_msg}") # 后续可正常使用input1、input2变量 print(f"你选择的披萨是:{input1}、{input2}")
原尝试代码的问题
- 语法错误:判断变量相等需要用双等号
==,你写的单等号=是赋值语句,运行时会直接触发语法错误 - 逻辑冗余:如果用户输入不足2个值,
split()返回的列表长度不够,解包阶段就会直接抛出ValueError,根本不会执行到后续的if input1 == None判断;且split()返回的元素永远不会是None,最多是空字符串 - 缺少循环结构:没有用
while包裹输入逻辑,异常捕获后只会打印提示就结束程序,不会重新触发输入流程
内容的提问来源于stack exchange,提问作者AnthonyM
相关产品推荐
相关产品推荐

