作业:
编写一个代码,实现手机通讯录管理
实现功能:增、删、改、查

字典,列表

【扩展】不要求一定做出来
实现拼音首字母查找

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的更多相关文章

  1. 【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 ...

  2. Python学习笔记——天气查询代码

    天气查询代码1 # 此程序无法运行,因为中国天气网的api接口被关闭了 import urllib.request import json import pickle #建立城市字典 pickle_f ...

  3. Python代码项目目录规范v1.0

    程序目录规范:bin # 存放可执行程序 xxxx.py # 程序主程序(入口文件)config # 存放配置信息 settings.py # 全局配置文件(可能暂时未应用)db # 存放数据文件 c ...

  4. Python WSGI v1.0 中文版(转)

    add by zhj: WSGI全称Web Server Gateway Interface,即Web网关接口.其实它并不是OSI七层协议中的协议,它就是一个接口而已,即函数,而WSGI规定了该接口的 ...

  5. lib-qqwry v1.0 发布 nodejs解析纯真IP库(qqwry.dat)

    lib-qqwry是当初学习node时用来练手的一个模块,用来解析纯真IP库的 现在发一个v1.0版本弥补我当时稚嫩的代码. 意外收获是,整理代码后发现,相比v0.x版本 急速模式下的效率提升大概20 ...

  6. python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题

    笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...

  7. [py]python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...

  8. Find security bugs学习笔记V1.0

    Find security bugs学习笔记V1.0 http://www.docin.com/p-779309481.html

  9. PHP代码安全学习笔记V1.0

    PHP代码安全学习笔记V1.0http://www.docin.com/p-778369487.html

随机推荐

  1. 树状数组(Binary Indexed Tree) 总结

    1.“树状数组”数据结构的一种应用 对含有n个元素的数组(a[1],...,a[k],...,a[n]): (1)求出第i个到第j个元素的和,sum=a[i]+...+a[j]. 进行j-i+1次加法 ...

  2. c++学习之友元

    最近工作好累呀,晚上总是失眠,自学c++的步骤都放慢了,本来之前看c++ primer的,结果这本书讲的太细节了,初学者不是很好把握.所以我又重新找了个教程,比较适合初学者.今天学习到友元函数和友元类 ...

  3. Linux进程调度的运行队列

    当Linux内核要寻找一个新的进程在CPU上运行时,必须只考虑处于可运行状态的进程,(即在TASK_RUNNING状态的进程),因为扫描整个进程链表是相当低效的,所以引入了可运行状态进程的双向循环链表 ...

  4. jQuery EasyUI 教程-Tooltip(提示框)

    <!DOCTYPE html> <html> <head> <title>jQuery Easy UI</title> <meta c ...

  5. Android NFC近场通信03----读写MifareClassic卡

                                           Android NFC近场通信02----读写MifareClassic卡 一.MifareClassic卡 相关 一般来 ...

  6. POJ 2488 A Knight&#39;s Journey

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29226   Accepted: 10 ...

  7. 我对REST的理解

    1:rest的由来 REST即表述性状态传递(英文:Representational State Transfer,简称REST) 通俗点说:资源在网络中以某种表现形式进行状态转移. 源于REST之父 ...

  8. string、wstring、cstring、 char、 tchar、int、dword转换方法(转)

    string.wstring.cstring. char. tchar.int.dword转换方法(转)   最近编程一直头痛这集中类型的转化,明知都可以转却总是记不住,不断的上网查来查去,在这里小结 ...

  9. 火狐浏览器Firefox如何使用插件,火狐有哪些好用的插件

    1 CoorPreviews 不打开网页链接预览该网页的内容. 预览如图所示: 点击关闭旁边的钉子可以让该窗口保持开着并且浏览速度加快.这对于快速浏览图片时非常有用. 2 FoxTab 3D方式预览网 ...

  10. 在线sass编译器

    工作中,我们可能遇到突发情况(无法安装考拉,gulp以及webpack以及其它的自动化工具),我们这时就要用即时编译工具了,那么它就是你的首选: http://tool.oschina.net/