Python获取键盘输入在列表指定位置插入姓名薪资的问题排查
问题根因
你的代码存在3个明显错误,导致无法完成插入逻辑:
- 列表内存储的单条员工数据是*元组(tuple)*类型,元组是不可变对象,不支持
append()操作,执行到对应代码会直接抛出属性错误。 - 插入逻辑完全错误:就算把元组换成可变的列表,你的写法是把新数据追加到目标位置已有的员工条目内部,不是新增一条独立的员工记录。
- 循环遍历的索引范围是
0到len(list1)-1,如果你输入的插入位置是列表末尾(索引等于列表长度),循环根本匹配不到对应索引,不会执行任何操作。
修复方案
Python列表原生提供insert(索引, 待插入内容)方法,专门用于在指定位置插入元素,不需要手动写循环遍历索引匹配位置。
修正后可正常运行的代码:
list1=[('pedro', [333]), ('juan', [9999])] new_pos=int(input('give me the position')) name_new=input('give me the name') salary_new=int(input('give me the salary')) # 按照原有数据格式组装新员工记录 new_staff = (name_new, [salary_new]) # 直接调用insert方法插入到指定位置 list1.insert(new_pos, new_staff) print(list1)
运行示例
当输入位置为1、姓名为tom、薪资为6000时,输出结果如下:
[('pedro', [333]), ('tom', [6000]), ('juan', [9999])]
如果输入的插入位置超过列表当前最大索引,insert()方法会自动将新元素追加到列表末尾,不会触发索引越界错误。
内容的提问来源于stack exchange,提问作者nooby
相关产品推荐
相关产品推荐

