Python练习笔记——通讯录查询V1.0
作业:
编写一个代码,实现手机通讯录管理
实现功能:增、删、改、查
字典,列表
【扩展】不要求一定做出来
实现拼音首字母查找
phone = {} while True: num = input("请您输入您的选择(1增 2删 3改 4查):") phone_value_list = list(phone.values()) # 获得联系人 拼音or号码的值,并将其转为列表 phone_sum = len(phone) # 计算号码总人数 phone_value_list_new = [phone_value_list[i] for i in range(phone_sum)] phone_keys_list = list(phone.keys()) # 将字典的建转化成列表 get_do = "" ": # 增start while True: while True: phone_name = input("请输入联系人姓名:") # 如果遇见联系人姓名已经存在的情况下处理方法start if phone_name in phone.keys(): get_do = input("%s联系人已经存在,您是否将该联系人覆盖(y:覆盖/修改|n:放弃)?" %phone_name) if "y" == get_do: # 此处直接输入,不做验证,待函数后可直接调用函数 # phone[phone_name][0] = input("为了更便捷您的检索,请输入联系人姓名首字母:") # phone[phone_name][1] = input("为了更便捷您的检索,请输入联系人的联系方式:") # print("祝贺您修改成功!") break if "n" == get_do: continue else: break # 如果遇见联系人姓名已经存在的情况下处理方法end phone_name_long = len(phone_name) # 请用户输入拼音首字母start while True: phone_abbreviation = input("为了更便捷您的检索,请输入联系人姓名首字母:") phone_abbreviation_long = len(phone_abbreviation) if phone_abbreviation_long != phone_name_long: print("您输入联系人姓名拼音首字母与姓名不相符") continue for i in range(phone_abbreviation_long): # A=65 Z=90 a=97 z=122 if ord(phone_abbreviation[i]) <65: print("您输入联系人姓名拼音首字母错误") break elif 90 < ord(phone_abbreviation[i]) < 97: print("您输入联系人姓名拼音首字母错误") break elif ord(phone_abbreviation[i]) > 122: print("您输入联系人姓名拼音首字母错误") break phone_abbreviation = phone_abbreviation.lower() print(phone_abbreviation) break # 请用户输入拼音首字母end # 请用户输入手机号start number_true = 1 while number_true: phone_number = input("请您输入联系人号码:") for i in range(len(phone_number)): ": print("您输入的联系号码带有非数字内容") break else: number_true = 0 # 请用户输入手机号end if get_do == "y": phone[phone_name][0] = phone_abbreviation phone[phone_name][1] = phone_number print(phone) print("祝贺您修改成功!") else: phone[phone_name] = [phone_abbreviation, phone_number] print(phone) break # 增end # 删start ": del_true = 1 while del_true: del_str = input("请输入您想删除的联系人姓名or电话号码") if del_str in phone.keys(): if 'y' == input("您确定要删除该联系人%s吗(y:删|n:否)" %del_str): del phone[del_str] print("您已经成功将%s删除了" %del_str) break else: break else: for i in range(phone_sum): if del_str in phone_value_list[i][0] or del_str in phone_value_list[i][1]: for j in range(phone_sum): # print(j) if phone_value_list[i] == phone[phone_keys_list[j]]: if 'y' == input("您确定要删除该联系人%s吗(y:删除|n:放弃)" % phone_keys_list[j]): print("您已经成功将%s删除了" % phone[phone_keys_list[j]]) del phone[phone_keys_list[j]] if i == j == phone_sum: del_true = 0 break else: del_true = 0 elif i == phone_sum: print("您要删除联系人的不存在!") break # 删end # 改start ": get_look = input("请输入您想修改的联系人姓名or拼音缩写or号码:") if get_look in phone.keys(): print("姓名\t\t号码") print("%s\t%s" %(get_look,phone[get_look][1])) while True: phone_name_long = len(phone_name) # 请用户输入拼音首字母start while True: phone_abbreviation = input("为了更便捷您的检索,请输入联系人姓名首字母:") phone_abbreviation_long = len(phone_abbreviation) if phone_abbreviation_long != phone_name_long: print("您输入联系人姓名拼音首字母与姓名不相符") continue for i in range(phone_abbreviation_long): # A=65 Z=90 a=97 z=122 if ord(phone_abbreviation[i]) < 65: print("您输入联系人姓名拼音首字母错误") continue elif 90 < ord(phone_abbreviation[i]) < 97: print("您输入联系人姓名拼音首字母错误") continue elif ord(phone_abbreviation[i]) > 122: print("您输入联系人姓名拼音首字母错误") continue phone_abbreviation = phone_abbreviation.lower() print(phone_abbreviation) break # 请用户输入拼音首字母end # 请用户输入手机号start number_true = 1 while number_true: phone_number = input("请您输入联系人号码:") for i in range(len(phone_number)): ": print("您输入的联系号码带有非数字内容") break else: number_true = 0 # 请用户输入手机号end break else: for i in range(phone_sum): if get_look in phone_value_list[i][0]: #表示先前输入的是拼音缩写 for j in range(phone_sum): if phone_value_list[i] == phone[phone_keys_list[j]]: #找到用户 # 该段代码不做验证,待函数封装后直接调用即可 print("联系人:%s,检索缩写:%s,联系方式:%s" % (phone_keys_list[j],phone[phone_keys_list[j]][0],phone[phone_keys_list[j]][1])) phone[phone_keys_list[j]][0] = get_look phone[phone_keys_list[j]][1] = input("请输入需要更变的联系方式") print("改变为") print("联系人:%s,检索缩写:%s,联系方式:%s" % (phone_keys_list[j],phone[phone_keys_list[j][0]],phone[phone_keys_list[j][1]])) # if i == j == phone_sum: # print("您要变更信息的联系人不存在!") break elif get_look in phone_value_list[i][1]: #表示先前输入的是电话号码 for j in range(phone_sum): if phone_value_list[i] == phone[phone_keys_list[j]]: # 找到用户 # 该段代码不做验证,待函数封装后直接调用即可 print("联系人:%s,检索缩写:%s,联系方式:%s" % (phone_keys_list[j],phone[phone_keys_list[j]][0],phone[phone_keys_list[j]][1])) phone[phone_keys_list[j]][0] = input("请输入需要更变的拼音缩写") phone[phone_keys_list[j]][1] = get_look print("改变为") print("联系人:%s,检索缩写:%s,联系方式:%s" % (phone_keys_list[j],phone[phone_keys_list[j][0]],phone[phone_keys_list[j][1]])) # if i == j == phone_sum: # print("您要变更信息的联系人不存在!") break # 改end # 查start ": get_look = input("请输入您想查看的联系人姓名or拼音缩写or号码:") if get_look in phone.keys(): print("姓名\t号码") print("%s\t%s" %(get_look,phone[get_look][1])) elif (get_look in phone_value_list[0]) or (del_str in phone_value_list[1]): for j in phone_sum: if get_look in list(phone[phone_keys_list[j]]): print("%s\t%s" % (get_look, phone[get_look][1])) else: print("您查询的联系人不存在") # 查end else: continue
Python练习笔记——通讯录查询V1.0的更多相关文章
- 【updating】python读书笔记-The Django Book2.0(for django1.4)
原文:http://www.djangobook.com/en/2.0/frontmatter.html 译文:http://djangobook.py3k.cn/2.0/ 或者http://docs ...
- Python学习笔记——天气查询代码
天气查询代码1 # 此程序无法运行,因为中国天气网的api接口被关闭了 import urllib.request import json import pickle #建立城市字典 pickle_f ...
- Python代码项目目录规范v1.0
程序目录规范:bin # 存放可执行程序 xxxx.py # 程序主程序(入口文件)config # 存放配置信息 settings.py # 全局配置文件(可能暂时未应用)db # 存放数据文件 c ...
- Python WSGI v1.0 中文版(转)
add by zhj: WSGI全称Web Server Gateway Interface,即Web网关接口.其实它并不是OSI七层协议中的协议,它就是一个接口而已,即函数,而WSGI规定了该接口的 ...
- lib-qqwry v1.0 发布 nodejs解析纯真IP库(qqwry.dat)
lib-qqwry是当初学习node时用来练手的一个模块,用来解析纯真IP库的 现在发一个v1.0版本弥补我当时稚嫩的代码. 意外收获是,整理代码后发现,相比v0.x版本 急速模式下的效率提升大概20 ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- Find security bugs学习笔记V1.0
Find security bugs学习笔记V1.0 http://www.docin.com/p-779309481.html
- PHP代码安全学习笔记V1.0
PHP代码安全学习笔记V1.0http://www.docin.com/p-778369487.html
随机推荐
- [9] 圆环(Ring)图形的生成算法
顶点数据的生成 bool YfBuildRingVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, Yui ...
- 如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)
转自:http://blog.csdn.net/jiangqin115/article/details/42684017 UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, ...
- OTL翻译(9) --常量的SQL语句
常量的SQL语句 一个没有绑定变量的SQL语句.SQL语句块或是存储过程就被称为常量的SQL语句.OTL通过一个静态的函数来执行这样的SQL语句. 例如: // static otl_cursor:: ...
- permission 文档 翻译 运行时权限
文档位置:API24/guide/topics/security/permissions.html System Permissions 系统权限 Android is a privilege-se ...
- VUE性能优化总结
1.v-show,v-if 用哪个? 在我来看要分两个维度去思考问题: 第一个维度是权限问题,只要涉及到权限相关的展示无疑要用 v-if, 第二个维度在没有权限限制下根据用户点击的频次选择,频繁切换的 ...
- svn 错误集锦续
4,svn出错:Error: File or directory '.' is out of date; try updating 出错原因:SVN服务器端的版本比你的版本要新,不允许提交. 解决方案 ...
- 手写一个自己的LocalCache - 基于LinkedHashMap实现LRU
功能目标 实现一个全局范围的LocalCache,各个业务点使用自己的Namespace对LocalCache进行逻辑分区.所以在LocalCache中进行读写採用的key为(namespa ...
- 解决spark中遇到的数据倾斜问题
一. 数据倾斜的现象 多数task执行速度较快,少数task执行时间非常长,或者等待很长时间后提示你内存不足,执行失败. 二. 数据倾斜的原因 常见于各种shuffle操作,例如reduceByKey ...
- Design Your Own Protocol In Five Minutes
https://mayaposch.wordpress.com/2011/10/03/design-your-own-protocol-in-five-minutes ---------------- ...
- Cognos值提示设置小技巧
针对值提示问题做一个小的总结: 1:显示类问题 如上图,如何让”英文参数名"和"分割线----"不显示,或者说指定中文显示值呢 (1):让”英文参数名"和&qu ...