Python中使用try/except实现数组搜索功能报错问题求助
问题排查与修复方案
现存问题
- 变量名大小写不匹配:定义的数组变量名为
startCodeArray,但try块中错误写成了全小写的startcodearray,Python对变量名大小写敏感,该错误会触发NameError异常,同时你使用了无指定捕获类型的裸except,会掩盖该报错,增加排查难度。 - try/except使用场景错误:
s1c in 数组是成员判断表达式,返回结果为布尔值True或False,本身不会抛出异常,所以即使用户输入的内容不在数组中,也不会进入except分支,会直接执行break跳出循环,完全达不到校验效果。 - 输入获取逻辑位置错误:用户输入仅在循环外获取一次,即便输入不合法也不会重新提示用户输入新内容,无法完成循环校验逻辑。
- 可选注意点:
startCodeArray长度为6,startPriceArray长度为5,若后续需要将编码与价格一一绑定使用,需要对齐两个数组的长度。
修复后代码
不需要用try/except实现该校验逻辑,直接通过布尔判断即可实现需求:
startCodeArray = ['c1', 'c2', 'c3', 'c4', 'c4', 'c5'] startPriceArray = [1.50, 3.00, 4.50, 6.00, 8.00] print('请输入首个位置的编码:\n', startCodeArray, '\n', startPriceArray) while True: s1c = input('').strip() # 直接判断输入是否在合法编码数组中 if s1c in startCodeArray: break print('请输入有效的编码:') # 校验完成后即可正常使用s1c变量 print(f"输入的合法编码为:{s1c}")
内容的提问来源于stack exchange,提问作者Robbie Marais
相关产品推荐
相关产品推荐

