Python如何让列表输入校验异常在两个列表输入完成后再提示
代码调整方案
核心调整逻辑为拆分输入环节与计算校验环节,先完成两次用户输入收集,再统一做异常判断与计算,避免单个输入出错直接中断后续输入流程。
修改后代码如下:
errors = [] list_one = None list_two = None # 完成两次输入采集,异常先收集不中断流程 try: list_one = eval(input()) except NameError: errors.append("The list has some non number values") try: list_two = eval(input()) except NameError: errors.append("The list has some non number values") # 全部输入完成后统一处理错误 if errors: # 若需展示所有错误可遍历errors输出,这里按原有逻辑输出单个提示 print(errors[0]) else: try: total = 0 newlis = [] for i in range(len(list_one)): newlis.append(list_one[i] * list_two[i]) for i in newlis: total += i print(total) except IndexError: print("Index out of bound")
关键调整说明
- 新增
errors列表统一收集输入环节产生的异常,保证两次输入操作都会执行完成 - 替换了原有变量名
sum,避免覆盖Python内置的sum()函数 - 输入全部完成后先校验是否有收集到的错误,有则优先输出提示,无异常再执行列表点积计算逻辑
- 若需同时展示所有输入错误,可将
print(errors[0])替换为遍历errors列表输出所有内容 - 额外提示:
eval()存在注入安全风险,生产环境建议使用ast.literal_eval()替代实现输入解析。
内容的提问来源于stack exchange,提问作者kirihadinomoyet
相关产品推荐
相关产品推荐

