实现按用户输入1-4的整数删除列表对应数量元素的问题咨询
现存代码核心问题
- 前置运行bug:代码中的
counter变量没有做初始值定义,首次进入循环执行counter = counter + 1时会直接抛出未定义错误,需补上counter = 0的初始化语句。 - 冗余代码:
addingList = list2.append(ask)属于无效赋值,list.append()是原地修改列表的方法,无返回值,该赋值操作没有实际作用。 - 功能逻辑缺失:当前代码完成1-4范围的输入校验后直接跳出循环,没有嵌入实际的删除执行逻辑;之前尝试用del仅删除1个元素,本质是单条del语句没有匹配用户输入的删除数量做循环执行。
修复实现
由于无特定删除条目要求,默认实现删除列表末尾对应数量的元素,适配你现有列表固定长度为5、最大删除数为4的边界要求,不会出现索引越界问题。
list2 = [] # 补上counter初始化 counter = 0 for i in range(5): counter = counter + 1 print("Item number : ", counter) ask = input("Type here to append to list: ") list2.append(ask) print("Here is your newly created list: ", list2) i = True while i: dellist = int(input("Select the number of items to be deleted. 1 - 4: ")) if dellist not in range(1, 5): print("Invalid choice, Please select a number between 1-4.") else: # 按输入的删除数量循环执行删除 for _ in range(dellist): del list2[-1] print("List after deletion: ", list2) break
之前仅删除1个条目的根本原因是:单条del语句无论用户输入3还是4的删除数,都只会执行1次删除动作。如果需要改为删除列表头部的元素,只需要把删除语句里的
del list2[-1]替换为del list2[0]即可,逻辑完全通用。
内容的提问来源于stack exchange,提问作者fffffffffffffffffffffffffffff
相关产品推荐
相关产品推荐

