【问题标题】:Python simple contact manager application. Delete contact function issuesPython 简单的联系人管理器应用程序。删除联系人功能问题
【发布时间】:2021-09-13 00:58:44
【问题描述】:

我正在为学校做作业,但其中一项功能遇到了一些问题。

作业是一个简单的联系人管理器应用程序,我在删除联系人功能时遇到了问题。说明说首先显示一个 txt 文件中的联系人编号列表,并询问用户他们要删除哪个号码。然后我应该使用 for 循环和计数器遍历文件。当计数器不等于用户输入时,程序应将每一行添加到空字符串。然后它应该将新列表写入 txt 文件。

我遇到的问题是,当我输入一个数字时,它会删除该数字及其下方的所有内容。就像当计数器与用户输入匹配时循环停止一样。这是我到目前为止删除联系人功能的代码:

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
            line_count += 1

    contacts_file.close()

    print(new_list)

    #contacts_new = open(contacts, 'w')

    #contacts_new.write(new_list)

    #print("Contact deleted.")
    print()

我对此很陌生,所以我确信这是我所缺少的一些简单的东西。

【问题讨论】:

    标签: python loops for-loop


    【解决方案1】:

    line_count == choose_contact 时,您不会将line_count 增加1

    if line_count != choose_contact:
        new_list += line
        line_count += 1
    

    下次运行for 循环时,line_count 的值仍将相同,并且仍将等于choose_contact。无论如何你都应该增加line_count(注意缩进):

    if line_count != choose_contact:
        new_list += line
    line_count += 1
    

    话虽如此,最好使用enumerate 而不是将自己的计数器保持在此类循环中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2013-07-11
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多