###### 问题遇到的现象和发生背景
我用python在写学生通讯录系统,功能就是1.添加2.删除3.修改4.查询5.获取所有学生通讯信息6.退出系统。然后单次运行的话 所有功能都能实现了已经。但是一旦第二次运行数据就需要重新添加,想建立txt存储数据。
###### 问题相关代码,请勿粘贴截图
def addstudent():
file = open('stu.txt','w') #存储数据到文件夹中
name = input("输入要添加的姓名:")
for i in ls :
if i !={}:
if i ['姓名']==name:
print("存在此人")
break
else:
sex = input("性别:")
telephone = input("电话号码:")
dt = {"姓名": name, "性别": sex, "电话": telephone}
ls.append(dt)
# dt1[name]= {"姓名": name, "性别": sex, "电话": telephone}
print("添加成功,内容为:姓名:{},性别:{},电话:{}".format(name,sex,telephone))
#互换键和值
print(dt)
print(dt1)
print(ls)
file.write(str(ls))
file.close()
a=[]
def delstudent():
file = open('stu.txt', 'r+')
for line in file:
a.append(line)
print(a)
print(type(a))
name1 = input("输入删除者的姓名")
for i in a:
print(i)
for j in i: #本来以为输出只要“长相”和存储进去时的一样就能照常用,结果类型完全不一样
print(j)
if j!={}:
if j['姓名']==name1:
print("删除成功\n删除的内容为:姓名:{},性别:{},电话:{}".format(i['姓名'], i['性别'], i['电话']))
j.clear()
file.write(str(i))
print(a)
file.close()
break
else:
print("查无此人\n请重新选择操作")
###### 运行结果及报错内容
string indices must be integers
字符串索引必须是整数,转换的结果还是字符串
###### 我的解答思路和尝试过的方法
于是我用1.添加时用open('stu.txt','w'),添加的内容必须将列表(我用的时列表里字符串的方式存储)转换为字符串。但是2.删除时,我想从stu.txt读出文件时,读出的成为字符串就没法再用遍历列表的方法。我也成功将stu里的文件用列表格式输出,但是原先的列表内容在新列表输出时还是字符串。就没办法去遍历他找到相对应的同学信息
###### 我想要达到的结果
存储同学的信息,姓名,性别,电话。实现这个程序。
-