You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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}")

原尝试代码的问题

  1. 语法错误:判断变量相等需要用双等号==,你写的单等号=是赋值语句,运行时会直接触发语法错误
  2. 逻辑冗余:如果用户输入不足2个值,split()返回的列表长度不够,解包阶段就会直接抛出ValueError,根本不会执行到后续的if input1 == None判断;且split()返回的元素永远不会是None,最多是空字符串
  3. 缺少循环结构:没有用while包裹输入逻辑,异常捕获后只会打印提示就结束程序,不会重新触发输入流程

内容的提问来源于stack exchange,提问作者AnthonyM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 14:06:02