赞
踩
- # 定义一个字典用于暂存信息(程序结束,数据删除)
- contacts = dict()
-
- input_buf = '请输入序号:'
-
- while True:
-
- # 打印菜单界面
- print(f''' {"="*8}手机通讯录{"="*8}
- 1.添加联系人\t\t2.查看联系人
- 3.删除联系人\t\t4.修改联系人
- 5.查找联系人\t\t0.退出''')
-
- # 选择菜单
- choice_menu = input(input_buf)
- input_buf = '请输入序号:'
-
- # 防止输入非范围内的字符
- if choice_menu not in tuple('012345'):
- input_buf = '请重新输入序号:'
- continue
-
- # 1.添加联系人 ============================
- elif choice_menu == '1':
- print(1)
-
- # 2.查看联系人 ============================
- elif choice_menu == '2':
- print(2)
-
- # 3.删除联系人 ============================
- elif choice_menu == '3':
- print(3)
-
- # 4.修改联系人 ============================
- elif choice_menu == '4':
- print(4)
-
- # 5.查找联系人 ============================
- elif choice_menu == '5':
- print(5)
-
- # 0.退出 ============================
- else:
- print(f'{"="*6}已退出手机通讯录{"="*6}')
- break
-
运行结果:
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请输入序号:1
- 1
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请输入序号:9
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请重新输入序号:a
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请重新输入序号:0
- ======已退出手机通讯录======
- # 1.添加联系人 ============================
- elif choice_menu == '1':
- print(f' {"=" * 8}添加联系人{"=" * 8}')
-
- # 防止输入空字符和首字符空格' '(无法防止多个空格输入)
- while True:
- name = input('请输入名字:')
- if name != '' and name != ' ':
- break
- while True:
- phone = input('请输入手机号码:')
- if phone != '' and phone != ' ':
- break
- while True:
- email = input('请输入邮箱:')
- if email != '' and email != ' ':
- break
- while True:
- address = input('请输入地址:')
- if address != '' and address != ' ':
- break
-
- keys_name += 1
- # 数据写入字典
- contacts[keys_name] = {'name': name, 'phone': phone, 'email': email, 'address': address}
- # print(contacts)
- print('已保存成功')
-
- # 2.查看联系人 ============================
- elif choice_menu == '2':
- print(f' {"=" * 8}查看联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- # 遍历打印通讯录
- for i in contacts.values():
- # print(i)
- print(f"姓名:{i['name']}\t手机号码:{i['phone']}\t邮箱:{i['email']}\t住址:{i['address']}")
-
- # 3.删除联系人 ============================
- elif choice_menu == '3':
- print(f' {"=" * 8}删除联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- name = input('请输入需要删除的名字:')
-
- name_count = 0 # 记录重名的次数
- keys_buf = list() # 存储重名的键值,方便字典索引
-
- # 遍历查找此人
- for i in contacts:
- if contacts[i]['name'] == name:
-
- name_count += 1 # 重名计数
- keys_buf.append(i) # 把找到名字的字典键值追加到列表中
-
- print(f"{name_count}.姓名:{contacts[i]['name']}\t"
- f"手机号码:{contacts[i]['phone']}\t"
- f"邮箱:{contacts[i]['email']}\t"
- f"住址:{contacts[i]['address']}")
-
- # 多个重名选择删除
- if name_count > 1:
- name_choice = int(input('请选择需要删除名字的序号:'))
- for i in range(name_count):
- if (name_choice-1) == i:
- contacts.pop(keys_buf[i]) # 删除字典元素
- print('已删除成功!')
-
- # 只有一个删除
- elif name_count == 1:
- contacts.pop(keys_buf[0]) # 删除字典元素
- print('已删除成功!')
-
- # 找不到此人
- else:
- print('此人不在通讯录,请确认输入是否有误!')
-
- # 4.修改联系人 ============================
- elif choice_menu == '4':
- print(f' {"=" * 8}修改联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- name = input('请输入需要修改的名字:')
-
- name_count = 0 # 记录重名的次数
- keys_buf = list() # 存储重名的键值,方便字典索引
-
- # 遍历查找此人
- for i in contacts:
- if contacts[i]['name'] == name:
- name_count += 1 # 重名计数
- keys_buf.append(i) # 把找到名字的字典键值追加到列表中
-
- print(f"{name_count}.姓名:{contacts[i]['name']}\t"
- f"手机号码:{contacts[i]['phone']}\t"
- f"邮箱:{contacts[i]['email']}\t"
- f"住址:{contacts[i]['address']}")
-
- # 多个重名选择修改
- if name_count > 1:
- name_choice = int(input('请选择需要修改名字的序号:'))
-
- for i in range(name_count):
- if (name_choice - 1) == i:
-
- # 防止输入空字符和首字符空格' '(无法防止多个空格输入)
- while True:
- new_name = input('请输入新的名字:')
- if new_name != '' and new_name != ' ':
- break
- while True:
- new_phone = input('请输入新的手机号码:')
- if new_phone != '' and new_phone != ' ':
- break
- while True:
- new_email = input('请输入新的邮箱:')
- if new_email != '' and new_email != ' ':
- break
- while True:
- new_address = input('请输入新的地址:')
- if new_address != '' and new_address != ' ':
- break
-
- # 新数据覆盖字典
- contacts[keys_buf[i]] = {'name': new_name, 'phone': new_phone,
- 'email': new_email, 'address': new_address}
- # print(contacts)
- print('已修改成功')
-
- # 只有一个删除
- elif name_count == 1:
-
- # 防止输入空字符和首字符空格' '(无法防止多个空格输入)
- while True:
- new_name = input('请输入新的名字:')
- if new_name != '' and new_name != ' ':
- break
- while True:
- new_phone = input('请输入新的手机号码:')
- if new_phone != '' and new_phone != ' ':
- break
- while True:
- new_email = input('请输入新的邮箱:')
- if new_email != '' and new_email != ' ':
- break
- while True:
- new_address = input('请输入新的地址:')
- if new_address != '' and new_address != ' ':
- break
-
- # 数据覆盖字典
- contacts[keys_buf[0]] = {'name': new_name, 'phone': new_phone,
- 'email': new_email, 'address': new_address}
- # print(contacts)
- print('已修改成功')
-
- # 找不到此人
- else:
- print('此人不在通讯录,请确认输入是否有误!')
-
- # 5.查找联系人 ============================
- elif choice_menu == '5':
- print(f' {"=" * 8}查找联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- name = input('请输入需要查找的名字:')
-
- name_count = 0 # 记录重名的次数
-
- # 遍历查找此人
- for i in contacts:
- if contacts[i]['name'] == name:
- name_count += 1 # 重名计数
-
- print(f"{name_count}.姓名:{contacts[i]['name']}\t"
- f"手机号码:{contacts[i]['phone']}\t"
- f"邮箱:{contacts[i]['email']}\t"
- f"住址:{contacts[i]['address']}")
-
- # 找不到此人
- if name_count == 0:
- print('此人不在通讯录,请确认输入是否有误!')
-
- """
- 用字典模拟手机通讯录
-
- 知识点:
- 1、嵌套字典使用
- 2、字典增删改查
- 3、嵌套循环/条件语句/跳转语句
- 4、数据类型转换/元素索引
- 改善与不足:
- 1、代码块很臃肿,有很多重复的代码,如果使用函数就能避免
- 2、在多个重名选择输入序号时,没有做限制
- 3、程序结束,数据删除,无法保存
- """
-
-
- # 定义一个字典用于暂存信息(程序结束,数据删除)
- contacts = dict()
-
- input_buf = '请输入序号:'
- keys_name = 0 # 字典键值命名
-
- # 功能实现 ===========================================================
- while True:
-
- # 打印菜单界面
- print(f''' {"=" * 8}手机通讯录{"=" * 8}
- 1.添加联系人\t\t2.查看联系人
- 3.删除联系人\t\t4.修改联系人
- 5.查找联系人\t\t0.退出''')
-
- # 选择菜单
- choice_menu = input(input_buf)
- input_buf = '请输入序号:'
-
- # 防止输入非范围内的字符
- if choice_menu not in tuple('012345'):
- input_buf = '请重新输入序号:'
- continue
-
- # 1.添加联系人 ====================================================
- elif choice_menu == '1':
- print(f' {"=" * 8}添加联系人{"=" * 8}')
-
- # 防止输入空字符和首字符空格' '(无法防止多个空格输入)
- while True:
- name = input('请输入名字:')
- if name != '' and name != ' ':
- break
- while True:
- phone = input('请输入手机号码:')
- if phone != '' and phone != ' ':
- break
- while True:
- email = input('请输入邮箱:')
- if email != '' and email != ' ':
- break
- while True:
- address = input('请输入地址:')
- if address != '' and address != ' ':
- break
-
- keys_name += 1
- # 数据写入字典
- contacts[keys_name] = {'name': name, 'phone': phone, 'email': email, 'address': address}
- # print(contacts)
- print('已保存成功')
-
- # 2.查看联系人 ====================================================
- elif choice_menu == '2':
- print(f' {"=" * 8}查看联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- # 遍历打印通讯录
- for i in contacts.values():
- # print(i)
- print(f"姓名:{i['name']}\t手机号码:{i['phone']}\t邮箱:{i['email']}\t住址:{i['address']}")
-
- # 3.删除联系人 ====================================================
- elif choice_menu == '3':
- print(f' {"=" * 8}删除联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- name = input('请输入需要删除的名字:')
-
- name_count = 0 # 记录重名的次数
- keys_buf = list() # 存储重名的键值,方便字典索引
-
- # 遍历查找此人
- for i in contacts:
- if contacts[i]['name'] == name:
- name_count += 1 # 重名计数
- keys_buf.append(i) # 把找到名字的字典键值追加到列表中
-
- print(f"{name_count}.姓名:{contacts[i]['name']}\t"
- f"手机号码:{contacts[i]['phone']}\t"
- f"邮箱:{contacts[i]['email']}\t"
- f"住址:{contacts[i]['address']}")
-
- # 多个重名选择删除
- if name_count > 1:
- name_choice = int(input('请选择需要删除名字的序号:'))
- for i in range(name_count):
- if (name_choice - 1) == i:
- contacts.pop(keys_buf[i]) # 删除字典元素
- print('已删除成功!')
-
- # 只有一个删除
- elif name_count == 1:
- contacts.pop(keys_buf[0]) # 删除字典元素
- print('已删除成功!')
-
- # 找不到此人
- else:
- print('此人不在通讯录,请确认输入是否有误!')
-
- # 4.修改联系人 ====================================================
- elif choice_menu == '4':
- print(f' {"=" * 8}修改联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- name = input('请输入需要修改的名字:')
-
- name_count = 0 # 记录重名的次数
- keys_buf = list() # 存储重名的键值,方便字典索引
-
- # 遍历查找此人
- for i in contacts:
- if contacts[i]['name'] == name:
- name_count += 1 # 重名计数
- keys_buf.append(i) # 把找到名字的字典键值追加到列表中
-
- print(f"{name_count}.姓名:{contacts[i]['name']}\t"
- f"手机号码:{contacts[i]['phone']}\t"
- f"邮箱:{contacts[i]['email']}\t"
- f"住址:{contacts[i]['address']}")
-
- # 多个重名选择修改
- if name_count > 1:
- name_choice = int(input('请选择需要修改名字的序号:'))
-
- for i in range(name_count):
- if (name_choice - 1) == i:
-
- # 防止输入空字符和首字符空格' '(无法防止多个空格输入)
- while True:
- new_name = input('请输入新的名字:')
- if new_name != '' and new_name != ' ':
- break
- while True:
- new_phone = input('请输入新的手机号码:')
- if new_phone != '' and new_phone != ' ':
- break
- while True:
- new_email = input('请输入新的邮箱:')
- if new_email != '' and new_email != ' ':
- break
- while True:
- new_address = input('请输入新的地址:')
- if new_address != '' and new_address != ' ':
- break
-
- # 新数据覆盖字典
- contacts[keys_buf[i]] = {'name': new_name, 'phone': new_phone,
- 'email': new_email, 'address': new_address}
- # print(contacts)
- print('已修改成功')
-
- # 只有一个删除
- elif name_count == 1:
-
- # 防止输入空字符和首字符空格' '(无法防止多个空格输入)
- while True:
- new_name = input('请输入新的名字:')
- if new_name != '' and new_name != ' ':
- break
- while True:
- new_phone = input('请输入新的手机号码:')
- if new_phone != '' and new_phone != ' ':
- break
- while True:
- new_email = input('请输入新的邮箱:')
- if new_email != '' and new_email != ' ':
- break
- while True:
- new_address = input('请输入新的地址:')
- if new_address != '' and new_address != ' ':
- break
-
- # 数据覆盖字典
- contacts[keys_buf[0]] = {'name': new_name, 'phone': new_phone,
- 'email': new_email, 'address': new_address}
- # print(contacts)
- print('已修改成功')
-
- # 找不到此人
- else:
- print('此人不在通讯录,请确认输入是否有误!')
-
- # 5.查找联系人 ====================================================
- elif choice_menu == '5':
- print(f' {"=" * 8}查找联系人{"=" * 8}')
-
- # 是否为空字典
- if contacts == dict():
- print('哦豁,此手机通讯录无数据!!!')
- continue
-
- name = input('请输入需要查找的名字:')
-
- name_count = 0 # 记录重名的次数
-
- # 遍历查找此人
- for i in contacts:
- if contacts[i]['name'] == name:
- name_count += 1 # 重名计数
-
- print(f"{name_count}.姓名:{contacts[i]['name']}\t"
- f"手机号码:{contacts[i]['phone']}\t"
- f"邮箱:{contacts[i]['email']}\t"
- f"住址:{contacts[i]['address']}")
-
- # 找不到此人
- if name_count == 0:
- print('此人不在通讯录,请确认输入是否有误!')
-
- # 0.退出 ==========================================================
- else:
- print(f'{"=" * 6}已退出手机通讯录{"=" * 6}')
- break
-
-
运行结果:
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请输入序号:5
- ========查找联系人========
- 哦豁,此手机通讯录无数据!!!
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请输入序号:1
- ========添加联系人========
- 请输入名字:周华
- 请输入手机号码:1008611
- 请输入邮箱:123.com
- 请输入地址:广州
- 已保存成功
- ========手机通讯录========
- 1.添加联系人 2.查看联系人
- 3.删除联系人 4.修改联系人
- 5.查找联系人 0.退出
- 请输入序号:2
- ========查看联系人========
- 姓名:周华 手机号码:1008611 邮箱:123.com 住址:广州
作者:周华
创作日期:2023/9/27
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。