Python简易联系人管理应用删除联系人功能异常问题咨询
问题原因
- 你代码中的
line_count += 1逻辑被放在了if line_count != choose_contact的判断分支内,只有当前行不需要被删除时,计数器才会自增。 - 当遍历到你指定要删除的行时,if条件不成立,
line_count不会更新,后续所有行的判断都会因为line_count永远等于目标序号,导致所有后续行都不会被写入新列表,就出现了你说的删除目标行及下方所有内容的问题。
修复方案
把line_count += 1移出if判断块,每遍历一行就让计数器加1即可。修正后的代码如下:
def del_contact(contacts): view_contacts(contacts) choose_contact = int(input("Please enter the number of the contact you wish to delete: ")) contacts_file = open(contacts, 'r') new_list = "" line_count = 1 for line in contacts_file: if line_count != choose_contact: new_list += line # 计数器自增逻辑移到if外,不管当前行是否删除都计数 line_count += 1 contacts_file.close() print(new_list) #contacts_new = open(contacts, 'w') #contacts_new.write(new_list) #print("Contact deleted.") print()
可选优化建议
- 处理文件时推荐使用
with语法,会自动帮你关闭文件,不需要手动调用close(),避免出现忘记关文件的风险。 - 可以增加用户输入合法性校验,比如判断用户输入的序号是否在联系人总数范围内,避免输入非法序号导致程序出错。
内容的提问来源于stack exchange,提问作者MycoNut
相关产品推荐
相关产品推荐

