Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在txt文件中添加新的联系人信息_Python_Hash - Fatal编程技术网

Python 在txt文件中添加新的联系人信息

Python 在txt文件中添加新的联系人信息,python,hash,Python,Hash,我有这么长的python代码,我在完成或修复它时遇到困难,我需要帮助 首先我有这些代码- 这将只显示菜单,我已经创建了几个def函数。一个用于创建数据并保存到txt文件,另一个用于使用哈希函数拆分名称。联系人信息作为数据在txt文件中创建。最后,在一个while循环中,我必须以某种方式调用菜单代码,这就是我被卡住的地方,否则我可能需要修复整个问题。另外,当我把一个电话号码输入555-5555时,它会出错。我如何输入这样的数值 def menu(): print("Contact List

我有这么长的python代码,我在完成或修复它时遇到困难,我需要帮助

首先我有这些代码-

这将只显示菜单,我已经创建了几个def函数。一个用于创建数据并保存到txt文件,另一个用于使用哈希函数拆分名称。联系人信息作为数据在txt文件中创建。最后,在一个while循环中,我必须以某种方式调用菜单代码,这就是我被卡住的地方,否则我可能需要修复整个问题。另外,当我把一个电话号码输入555-5555时,它会出错。我如何输入这样的数值

def menu():
    print("Contact List Menu:\n")
    print("1. Add a Contact")
    print("2. Display Contacts")
    print("3. Exit\n")
menu()
choice = int(input("What would you like to do?: "))

def data():
    foo = open("foo.txt", "a+")
    name = input("enter name: ")
    number = int(input("enter the number: "))
    foo.write(name + " " + str(number))
foo.close()


def contact():
    data = open("foo.txt")
    file = {}
    for person in data:
        (Id, number) = person.split()
        file[number] = Id
data.close()

while choice !=3:
    if choice == 1:
        print(data())
    if choice ==2:
        print(data())
    menu()
    choice = int(input("What would you like to do?: "))

程序似乎从未停止过,我必须使用菜单中的选项3退出程序。

555-5555这样的电话号码不是有效的整数,因此请将其保留为文本

menu()
内部调用
menu()
调用
menu()
,等等。这是递归。当您选择
3
时,您将离开最后一个
菜单()
,返回上一个
菜单()


编辑:

顺便说一句:您必须在
write

def menu():
    print("Contact List Menu:\n")
    print("1. Add a Contact")
    print("2. Display Contacts")
    print("3. Exit\n")

def data():
    foo = open("foo.txt", "a+")
    name = input("enter name: ")
    number = int(input("enter the number: "))
    foo.write(name + " " + str(number) + "\n") # new line
    foo.close()

def contact():
    data = open("foo.txt")
    for person in data:
        name, number = person.split()
        print(name, number)
    data.close()

#----------------

menu()
choice = int(input("What would you like to do?: "))

while choice !=3:

    if choice == 1:
        data()
    if choice == 2:
        contact()

    menu()
    choice = int(input("What would you like to do?: "))

如果您有错误,通常建议您显示堆栈跟踪和错误描述……不过,我修复了错误,只是删除了def数据函数代码上的int函数。但是while循环仍然存在同样的问题是的,我可以按3,也可以退出程序,但我无法确定如何使用其他选项。当我按2时,我无法找到选项2。当你按
2
调用
data()
not
contact()时
-您调用了错误的函数。那么,如果我想显示联系人,我必须在while循环中做些什么呢?啊,谢谢您的修复,但我现在不知道为什么它不会显示选项2上的任何内容,因为某些原因。您是否收到错误或其他信息?首先删除旧文件
foo.txt
,因为每个联系人的末尾都没有“\n”,所以
对于数据中的个人
将所有内容都作为一行读取。然后添加新联系人。