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

Python入门求助:为邮件列表中的邮箱分配序号以实现按号删除

问题:如何给邮件列表的邮箱分配序号,支持按序号删除?

我正在学习第一门Python课程,需要实现为添加到邮件列表的邮箱分配序号,这样删除邮箱时只需输入对应序号即可。以下是我的现有代码,目前不知从何入手修改,请求帮助。

现有代码:

menu = 0
list = []
while menu < 4:
    print(" 1 to add an email\n 2 to remove an email\n 3 to print list\n 4 to EXIT menu")
    print("")
    menu = int(input("Enter: "))
    print("")
    if menu == 1:
        enter_email = input("What is the email: ")
        list.insert(1, enter_email)
        print("")
        print("The email:", enter_email, "was successfully added to the list")
        print("")
    elif menu == 2:
        remove_email = input("What email would you like to remove: ")
        if remove_email in list:
            list.remove(remove_email)
            print("")
            print("The email, ", remove_email, ", was removed from the list")
            print("")
        else:
            print("")
            print("That email does not exist")
            print("")
    elif menu == 3:
            email_list = ', '.join(str(item) for item in list)
            print("")
            print(email_list)
            print("")
    elif menu == 4:
        print("Exited successfully, have a nice day")

回答

可以分三个关键部分修改代码,实现按序号管理邮箱的需求:

  1. 修复邮箱添加逻辑:原代码用list.insert(1, enter_email)会把新邮箱插到列表的第二个位置,改用append()把新邮箱加到列表末尾,保证序号和添加顺序一致。
  2. 修改列表打印逻辑:打印列表时给每个邮箱加上从1开始的序号,符合用户的使用习惯。
  3. 修改删除逻辑:让用户输入序号,先验证序号合法性,再通过索引删除对应邮箱。

修改后的完整代码:

menu = 0
email_list = []  # 避免用list作为变量名,和内置类型冲突
while menu < 4:
    print(" 1 to add an email\n 2 to remove an email\n 3 to print list\n 4 to EXIT menu")
    print("")
    menu = int(input("Enter: "))
    print("")
    if menu == 1:
        enter_email = input("What is the email: ")
        email_list.append(enter_email)  # 添加到列表末尾
        print("")
        print(f"The email: {enter_email} was successfully added to the list")
        print("")
    elif menu == 2:
        if not email_list:
            print("")
            print("The email list is empty")
            print("")
            continue
        # 处理序号删除逻辑
        try:
            remove_index = int(input("Enter the number of the email to remove: ")) - 1  # 转为列表索引
            if 0 <= remove_index < len(email_list):
                removed_email = email_list.pop(remove_index)
                print("")
                print(f"The email, {removed_email}, was removed from the list")
                print("")
            else:
                print("")
                print("Invalid number, please enter a valid email number")
                print("")
        except ValueError:
            print("")
            print("Please enter a valid number")
            print("")
    elif menu == 3:
        print("")
        if not email_list:
            print("The email list is empty")
        else:
            # 带序号打印邮箱
            for idx, email in enumerate(email_list, start=1):
                print(f"{idx}. {email}")
        print("")
    elif menu == 4:
        print("Exited successfully, have a nice day")

关键修改说明:

  • 变量名从list改为email_list,避免和Python内置的list类型冲突。
  • 用enumerate(email_list, start=1)直接生成从1开始的序号,清晰展示每个邮箱的位置。
  • 删除功能中加入空列表判断、非数字输入捕获,以及序号范围验证,让程序更健壮。

内容的提问来源于stack exchange,提问作者Salvatore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:33:35