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
随机推荐
- 3维DEMO: 抽奖圆盘
抽奖圆盘 前些日子去超市,消费满一定钱数可以参加抽奖,就是在电视机上有个可旋转的圆盘,按一键开始,按一键抽奖结束.看到最大奖的扇形区域大约有个10度角的样子,按说中大奖的概率应该是36分之1.当然,这 ...
- 【Todo】React & Nodejs学习 &事件驱动,非阻塞IO & JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可
JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可 今天在学习ReactJS和NodeJS,看到关于ReactJS的这篇文章 ...
- is-subsequence
public class Solution { public boolean isSubsequence(String s, String t) { int idx = 0; for (int i=0 ...
- Eclipse 中java跨工程调用类
在Eclipse中,有时候需要跨工程调用其他工程中的方法.如下面有两个Java Project : 如果要在A工程中调用B工程中的类,可以将B工程添加到A工程中: A---- >Build Pa ...
- [模仿微软Live.cn]JavaScript输入邮箱自动提示
原理是:在一个输入框 中,当我输入任何字的时候 自动下拉相应的邮箱提示,在输入框输入123的时候 下拉框有所有123的邮箱 输入其他的时候 有其他文案对应的邮箱. 同理 此插件不需要任何html标签, ...
- 在web项目启动时执行某个方法
在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...
- Tomcat gzip果然强大,js文件压缩率50%以上
Tomcat配置使用gzip,在server.xml中 <Connector port="9098" protocol="HTTP/1.1" connec ...
- 移动立方体算法(Marching cubes algorithm)
百度百科: 医学图像三维重建的方法主要有两大类:一类是三维面绘制,另一类是三维体绘制.体绘制能够更真实地反映物体结构,但由于其运算量大,即使利用高性能的计算机也无法满足实际应用中交互操作的需要.因此, ...
- Android直播实现 Android端推流、播放
最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码 ...
- 在Fedora8上安装MySQL5.0.45的过程
本来想安装最新的5.6.13-1版本,下载下来后,依赖的包rpmlib无处下载,无法只得作罢.从Foreda8的安装光盘中找到了以下文件: mysql-5.0.45-4.fc8.i386.rpm my ...