鱼C论坛

 找回密码
 立即注册
查看: 2133|回复: 1

[作品展示] 一个通讯录

[复制链接]
发表于 2022-4-23 20:50:22 | 显示全部楼层 |阅读模式

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

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

x
这是我在别人的启发下写的,他的比较简单,我帮忙写的更加深入

  1. import os
  2. import pickle

  3. if not os.path.exists('E:/通讯.pkl'):
  4.     with open('E:/通讯.pkl', 'wb') as f:
  5.         pickle.dump({},f)
  6. else:
  7.     with open('E:/通讯.pkl', 'rb') as f:
  8.         book = pickle.load(f)

  9. def phone(a):
  10.     length = len(a)
  11.     while (a.isspace() or length == 0):#排除空格和没输入密码
  12.         a = input('电话不能空,请重新输入电话:')
  13.         length = len(a)
  14.     if length == 11:
  15.         flag = 0
  16.     else:
  17.         flag = 1
  18.     for i in a:
  19.         if i.isdigit():
  20.             flag1 = 0
  21.         else:
  22.             flag1 = 1
  23.             break
  24.     while 1:
  25.         if flag == 0 and flag1 == 0:
  26.             break
  27.         else:
  28.             a = input('输入不合法,请输入正确的电话:')
  29.             phone(a)
  30.             break
  31.     return a

  32. def amend(book):
  33.     s = 1
  34.     while s:
  35.         nam = input("请输入要修改的用户名:")
  36.         if nam not in book:
  37.             nam = input('用户不存在,请重新输入要修改的用户名:')
  38.         try:
  39.             choice = int(input("请问修改哪一项(按1性别,按2电话号码,按3家庭住址,按其他数字退出):"))
  40.         except ValueError as reason:
  41.             print('输入出错啦T_T\n错误原因是:' + str(reason))
  42.         if choice in [1, 2, 3]:
  43.             book[nam][choice_list[choice]] = input("请输入{}的修改值:".format(choice_list[choice]))
  44.             s = input("是否继续修改,需要按0,不需要随意:")
  45.             if s == '0':
  46.                 s = 1
  47.                 continue
  48.             else:
  49.                 s = 0
  50.         else:
  51.             print('本轮结束')
  52.             s = 0
  53.     print("-----修改完毕-----")
  54.     with open('E:/通讯.pkl', 'wb') as f:
  55.         pickle.dump(book, f)

  56. def entering(book):
  57.     print("-----录入模式-----")
  58.     name = input("请输入用户名:")
  59.     if name in book:  # 穿插修改部分
  60.         try:
  61.             name = int(input("电话簿中已有{}用户,是否修改?(是1/否2)".format(name)))
  62.         except ValueError as reason:
  63.             print('输入出错啦T_T\n错误原因是:' + str(reason))
  64.         if name != 1:
  65.             print("已结束本轮")
  66.         elif name == 1:
  67.             amend(book)
  68.     else:
  69.         try:
  70.             gender = int(input("{}性别(男1/女2/未知3):".format(name)))
  71.         except ValueError as reason:
  72.             print('输入出错啦T_T\n错误原因是:' + str(reason))
  73.         if gender == 1:
  74.             gender = "男"
  75.         elif gender == 2:
  76.             gender = "女"
  77.         else:
  78.             gender = "未知"
  79.         phonenum = input("{}的电话号码:".format(name))
  80.         phone(phonenum)
  81.         home = input("{}的家庭住址(若未知按1):".format(name))
  82.         if home == '1':
  83.             home = '未知'
  84.         book[name] = {'用户名': name, '性别': gender, '电话号码': phonenum, '家庭住址': home}

  85.         print("-----录入完毕-----")
  86.         with open('E:/通讯.pkl', 'wb') as f:
  87.             pickle.dump(book, f)
  88.     return book

  89. '''豆嘉木电话簿'''

  90. print("-------欢迎使用豆嘉木电话簿-------")

  91. choice_list = [0, '性别', '电话号码', '家庭住址']
  92. while True:
  93.     p = int(input("按1是录入,按2是查询按,按3是删除,按其他数字退出:"))  # 录入部分
  94.     if p == 1:
  95.         entering(book)
  96.     elif p == 2:
  97.         print("-----查询模式-----")
  98.         try:
  99.             check = input("请输入查询对象的名称:")
  100.         except TypeError:
  101.             print('输入错误')
  102.         if check not in book:
  103.             while 1:
  104.                 check = int(input("%s不在电话簿中,请问是否增加联系人(是1/否2):"%check))
  105.                 if check == 1:
  106.                     entering(book)
  107.                     break
  108.                 else:
  109.                     break
  110.         else:
  111.             print('用户名:%s \n性别:%s \n电话号码:%s \n家庭住址:%s'%(book[check]['用户名'], book[check]['性别'],
  112.                                                               book[check]['电话号码'], book[check]['家庭住址']))
  113.     elif p == 3:
  114.         print("-----删除模式-----")
  115.         delmem = input("需要删除哪一个用户(按数字退出):")
  116.         if delmem.isdigit():
  117.             print("-----退出删除模式-----")
  118.         elif delmem not in book:
  119.             delmem = int(input("%s不在电话簿中,请问是否增加联系人(是1/否2):" %delmem))
  120.             if delmem == 1:
  121.                 entering(book)
  122.         else:
  123.             del book[delmem]
  124.         with open('E:/通讯.pkl', 'wb') as f:
  125.             pickle.dump(book, f)
  126.         print("-----删除完毕-----")

  127.     else:
  128.         print("-----程序终止-----")
  129.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-6-11 13:40:05 From FishC Mobile | 显示全部楼层
给张图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 20:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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