You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:57:00