鱼C论坛

 找回密码
 立即注册
查看: 2055|回复: 4

各位为啥写入的文件会写入三次?

[复制链接]
发表于 2020-2-7 17:56:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. f = open('B:\\Python38\\Python code\\AddressBook\\address_book.txt','r+')
  2. #打开文件

  3. AddressBook = {}
  4. name1 = []
  5. number1 = []
  6. #初始化字典和列表

  7. for each1 in f:
  8.     (name2,number2) = each1.split(':',1)
  9.     name1.append(name2)
  10.     number1.append(number2)
  11. #将文件内容传入列表中

  12. AddressBook = dict(zip(name1,number1))
  13. #将列表内容传入字典中

  14. AddressBookNew = AddressBook.copy()

  15. while 1:
  16.     print('''
  17.     |---欢迎进入通迅录程序  ---|
  18.     |---1,查询联系人资料    ---|
  19.     |---2,添加新的联系人    ---|
  20.     |---3,删除已有联系人    ---|
  21.     |---4,显示所有联系人资料---|
  22.     |---5,退出通讯录程序    ---|''')

  23.     index = int(input('请输入相关的指令代码:'))

  24.     if index == 1:

  25.         name = input('请输入联系人姓名:')

  26.         if name in AddressBook:
  27.             print(name,':',AddressBook[name])
  28.         else:
  29.             print('查无此人')

  30.     elif index == 2:

  31.         name = input('请输入联系人姓名:')

  32.         if name in AddressBook:
  33.             print('您输入的姓名在通迅录中已存在 -->>',end=' ')
  34.             print(name,':',AddressBook[name])
  35.             choice = input('是否修改用户资料?(YES/NO):')
  36.             if choice == 'YES':
  37.                 number_new = input('请输入修改后电话号码:')
  38.                 AddressBookNew[name] = number_new
  39.         else:
  40.             number = input('请输入联系人电话号码:')
  41.             AddressBookNew[name] = number

  42.     elif index == 3:

  43.         name = input('请输入联系人姓名:')

  44.         if name in AddressBook:
  45.             print(name,':',AddressBook[name])
  46.             choice = input('是否删除该用户的资料?(YES/NO):')
  47.             if choice == 'YES':
  48.                 AddressBookNew.pop(name)
  49.                 print(name,'的用户资料已删除')
  50.         else:
  51.             print('查无此人')

  52.     elif index == 4:
  53.         for each in AddressBookNew.items():
  54.             print(each)

  55.     elif index == 5:

  56.         name3 = list(AddressBookNew.keys())
  57.         number3 = list(AddressBookNew.values())

  58.         for each3 in name3:

  59.             if name not in AddressBook:
  60.                 f.write(name)
  61.                 f.write(':')
  62.                
  63.                 f.write(AddressBookNew[name])
  64.                 f.write('\n')
  65.             elif AddressBook.get(each3) != AddressBookNew.get(each3):
  66.                 new_number = AddressBookNew.get(each3)
  67.                 old_number = AddressBook.get(each3)
  68.                 f.write(new_number.replace(old_number,new_number))

  69.         f.close()

  70.         print('|---感谢使用通讯录程序---|')
  71.         break
复制代码
各位这该怎么修改呀,写入了3次

                               
登录/注册后可看大图

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-7 19:04:00 | 显示全部楼层
看不到图,没有发现3次写入,另70,80行name应为each3
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-7 19:05:46 | 显示全部楼层
你这个程序本身就有bug,建议先改一下
查询不好使,查不到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-8 20:25:10 | 显示全部楼层
qiuyouzhi 发表于 2020-2-7 19:05
你这个程序本身就有bug,建议先改一下
查询不好使,查不到

好的谢谢,初学编程不久
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-8 20:26:18 | 显示全部楼层
好的,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-22 06:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表