liujie6704 发表于 2021-10-24 16:07:03

求助,关于通讯录程序

第25讲课后作业,动动手那里的通讯录程序有个问题,就是之前输入的姓名、电话在第二次打开程序后均不存在了,因为每次打开程序,都会把字典重置为空字典,请问如何解决这个问题,即保存之前输入的姓名、电话?

jackz007 发表于 2021-10-24 16:39:20

       你在问什么?Python 还是 C/C++,你的代码在哪里?

liujie6704 发表于 2021-10-25 10:26:26

jackz007 发表于 2021-10-24 16:39
你在问什么?Python 还是 C/C++,你的代码在哪里?

《零基础学习python》第25讲课后作业。

jackz007 发表于 2021-10-25 10:28:22

liujie6704 发表于 2021-10-25 10:26
《零基础学习python》第25讲课后作业。

   这个作业的内容是什么,你的代码在哪里?

liujie6704 发表于 2021-10-25 12:45:58

jackz007 发表于 2021-10-25 10:28
这个作业的内容是什么,你的代码在哪里?


print('|--- 欢迎进入通讯录程序 ---|')
print('|--- 1:查询联系人资料---|')
print('|--- 2:插入新的联系人---|')
print('|--- 3:删除已有联系人---|')
print('|--- 4:退出通讯录程序---|')

contacts = dict()

while 1:
    instr = int(input('\n请输入相关的指令代码:'))
   
    if instr == 1:
      name = input('请输入联系人姓名:')
      if name in contacts:
            print(name + ' : ' + contacts)
      else:
            print('您输入的姓名不再通讯录中!')

    if instr == 2:
      name = input('请输入联系人姓名:')
      if name in contacts:
            print('您输入的姓名在通讯录中已存在 -->> ', end='')
            print(name + ' : ' + contacts)
            if input('是否修改用户资料(YES/NO):') == 'YES':
                contacts = input('请输入用户联系电话:')
      else:
            contacts = input('请输入用户联系电话:')

    if instr == 3:
      name = input('请输入联系人姓名:')
      if name in contacts:
            del(contacts)         # 也可以使用dict.pop()
      else:
            print('您输入的联系人不存在。')
            
    if instr == 4:
      break

print('|--- 感谢使用通讯录程序 ---|')
   

傻眼貓咪 发表于 2021-10-25 13:12:05

本帖最后由 傻眼貓咪 于 2021-10-25 13:13 编辑

兄弟,首先你必须了解什么是程序语言,无论是 C/C++ 或 Python 或 Java,代码只是代码啊,最终还是看你想把代码变成什么东西啊,比如电脑新软体、网页、手机游戏、电脑游戏等等.....,在还没有变成这些东西之前,它只是个代码而已,编译器或解释器只是负责诠译你的代码给系统知道而已,并不算完成新软体或游戏啊,你所运行的所有数据,在你关闭代码同时销毁,不可能储存的(除非设置数据库保存,或储存在 .txt 文件里),这些都是基本知识,在学习程序语言前就应该需要了解这些。{:10_277:}{:10_277:}{:10_277:}

番杰 发表于 2021-10-25 13:27:54

这个不是你代码的问题,
简单的说:你每次写入的姓名、电话之类的数据信息的有效周期就是在你程序运行的期间,
当你结束这个程序,这个程序运行期间保存的数据都会被删除。

你可以想想,要是你每次写的代码,运行中生成的数据,在结束运行后,不被删除,一直保存在你的电脑里,
那么随着你的代码写的越来越多,运行后产生的数据也越来越多,占用的电脑内存也就越来越多,
这样就会导致你的电脑就会越来越卡,所以程序运行期间保存的数据在程序结束后都会被删除。

jackz007 发表于 2021-10-25 15:50:43

本帖最后由 jackz007 于 2021-10-25 16:12 编辑

#coding:gbk

fn , fc = 'data.txt', False
contacts = dict()
try:
    f = open(fn)
    for x in f:
      if x . strip():
            a , b = x . strip() . split(' , ')
            contacts = b . strip()
    f . close()
except:
    pass         

print('|--- 欢迎进入通讯录程序 ---|')
print('|--- 1:查询联系人资料---|')
print('|--- 2:插入新的联系人---|')
print('|--- 3:删除已有联系人---|')
print('|--- 4:退出通讯录程序---|')

while 1:
    instr = int(input('\n请输入相关的指令代码:'))
   
    if instr == 1:
      name = input('请输入联系人姓名:')
      if name in contacts:
            print(name + ' : ' + contacts)
      else:
            print('您输入的姓名不再通讯录中!')

    if instr == 2:
      name = input('请输入联系人姓名:')
      if name in contacts:
            print('您输入的姓名在通讯录中已存在 -->> ', end='')
            print(name + ' : ' + contacts)
            if input('是否修改用户资料(YES/NO):') == 'YES':
                contacts = input('请输入用户联系电话:')
      else:
            contacts = input('请输入用户联系电话:')
            fc = True
    if instr == 3:
      name = input('请输入联系人姓名:')
      if name in contacts:
            del(contacts)         # 也可以使用dict.pop()
            fc = True
      else:
            print('您输入的联系人不存在。')
            
    if instr == 4:
      if fc:
            f = open(fn , 'wt')
            for a , b in contacts . items():
                f . write(a + ' , ' + b + '\n')
            f . close()
      break

print('|--- 感谢使用通讯录程序 ---|')
      运行实况:
D:\0002.Exercise\Python>python tx.py
|--- 欢迎进入通讯录程序 ---|
|--- 1:查询联系人资料---|
|--- 2:插入新的联系人---|
|--- 3:删除已有联系人---|
|--- 4:退出通讯录程序---|

请输入相关的指令代码:2
请输入联系人姓名:abc
请输入用户联系电话:123

请输入相关的指令代码:2
请输入联系人姓名:cde
请输入用户联系电话:234

请输入相关的指令代码:2
请输入联系人姓名:def
请输入用户联系电话:345

请输入相关的指令代码:2
请输入联系人姓名:efg
请输入用户联系电话:456

请输入相关的指令代码:4
|--- 感谢使用通讯录程序 ---|

D:\0002.Exercise\Python>python tx.py
|--- 欢迎进入通讯录程序 ---|
|--- 1:查询联系人资料---|
|--- 2:插入新的联系人---|
|--- 3:删除已有联系人---|
|--- 4:退出通讯录程序---|

请输入相关的指令代码:1
请输入联系人姓名:cde
cde : 234

请输入相关的指令代码:1
请输入联系人姓名:efg
efg : 456

请输入相关的指令代码:4
|--- 感谢使用通讯录程序 ---|

D:\0002.Exercise\Python>

liujie6704 发表于 2021-10-27 15:50:57

jackz007 发表于 2021-10-25 15:50
运行实况:

谢谢1
页: [1]
查看完整版本: 求助,关于通讯录程序