如何在获取用户数字输入时抛出异常?列表输入异常处理求助
问题解决:输入数字时的异常处理与列表填充需求
原代码存在的问题
- 变量名不匹配:定义了
nameList却使用numList,会触发NameError try/except结构错误:except必须与try直接配对,不能嵌套在if语句内部- 异常类型错误:需求要求输入负数时抛出
ValueError,但代码错误捕获NameError - 逻辑漏洞:输入负数时仍会执行列表添加和计数操作,不符合“负整数不添加”的要求
- 断言误用:在
while前添加断言时,num未定义必然触发语法错误,断言需放在num赋值之后
正确实现代码
numList = [] count = 0 while count < 5: try: num = int(input('Enter a number: ')) if num < 0: # 主动抛出需求指定的ValueError raise ValueError("Positive integers only!") numList.append(num) count += 1 except ValueError as e: print(e) print(numList)
代码说明
- 变量名统一为
numList,避免未定义错误 - 将
try放入循环内部,每次输入都做异常检查 - 输入负数时主动用
raise抛出ValueError,附带提示信息 except捕获两类ValueError:用户输入非整数的情况、主动抛出的负数情况,打印提示后不执行添加列表和计数操作,继续等待有效输入- 直到收集满5个正整数后退出循环,输出最终列表
内容的提问来源于stack exchange,提问作者astra
相关产品推荐
相关产品推荐

