如何删除列表指定索引元素并在无效输入时终止程序
解决列表指定索引元素删除与循环终止问题
原代码的问题分析
- 循环逻辑混乱:
while True与for循环嵌套后直接break,无法正确收集指定数量的输入元素 - 删除时机错误:每添加一个元素就执行删除操作,此时列表长度大概率不足,会触发索引越界错误
- 索引匹配错误:需求是删除第2个和第4个输入元素(对应索引1和3),但原代码删除的是索引0和3,不符合需求
修正后的实现代码
num_elements = [] try: list_length = int(input('Enter number of elems: ')) # 收集指定数量的有效整数输入 for idx in range(list_length): try: item = int(input(f'Enter number {idx+1}: ')) num_elements.append(item) except ValueError: print('Invalid Input!!!') num_elements.clear() break else: # 所有输入完成后执行删除操作,从后往前删避免索引偏移 if len(num_elements) >= 4: del num_elements[3] if len(num_elements) >= 2: del num_elements[1] print('处理后的列表:', num_elements) except ValueError: print('Invalid Input!!!')
代码关键说明
- 初始输入校验:外层
try捕获列表长度输入的无效值,直接终止程序 - 输入收集逻辑:
for循环严格控制输入数量,每个输入单独做异常校验,无效则清空已输入内容并终止收集 - 安全删除逻辑:删除指定索引时从后往前操作(先删第4个元素索引3,再删第2个元素索引1),避免前面删除导致后续元素索引偏移
- 长度判断:删除前先检查列表长度,防止因输入数量不足引发索引越界错误
内容的提问来源于stack exchange,提问作者razorGold
相关产品推荐
相关产品推荐

