• 小甲鱼零基础学python第25讲课后习题动手练习--通讯录


    小甲鱼零基础学python第25讲课后习题动手练习---通讯录

    **************************通讯录要求*******************************

    输入指令:

    |---1:查询联系人资料---|
    |---2:插入新的联系人---|
    |---3:删除已有联系人---|
    |---4:退出通讯录程序---| 

    *******************************题目分析*********************************

    代码逻辑:
    输入指令1:
        如果有:
            输出查询到的信息
        如果没有:
            提示没有该用户的信息
    输入指令2:
        提示输入用户名
        如果存在该用户名:
            提示是否需要修改用户信息
                如果是:
                    修改用户信息
                如果否:
                    打印用户信息
        如果不存在用户信息:
            添加用户信息
    输入指令3:
        输入用户名:
        用户是否存在于字典中:
            如果存在该用户:
                提示是否确定要删除用户信息:
                    如果是:
                        删除用户信息
                    如果否:
                        打印用户信息
            如果不存在该用户:
                提示该用户不存在
    输入指令4:
        打印感谢信息
        重新给Q赋值,是程序跳出

    *****************************出现的问题*********************************

    1、print()语句使用换行符的时候最后一个括号前不需要加上换行符

      print('xxxxxxxx

    xxxxxxxxxxxxxxxxx

    xxxxxxxxxxxxxxx ')

    2、这段程序早就写好了就是编译没法通过,最后在其他编辑软件里面调试才慢慢的将BUG找出来,最致命的就是以前最不以为然的一点-----讲TAB与SPACE混用的问题。

      python中缩进使用4个空格表示的,notepad++中设置的TAB按键是4个空格,但是将TAB于空格混用就很麻烦了,程序一直报错,重新写还是没用,这样用起来已经变成习惯了,真的是可怕,以后一定要改正这个习惯!!

    3、对指令码的判断,输入的是字符型变量,所以对程序进行判断的时候应该将指令码转换成整型数据进行判断。

     

    *************************编译通过后的代码如下*******************************

    print('|---欢迎进入通讯录程序---| 
    |---1:查询联系人资料---| 
    |---2:插入新的联系人---| 
    |---3:删除已有联系人---| 
    |---4:退出通讯录程序---| ')
    
    connect_dict = {}
    Q = True
    
    while Q :
        num = int(input('请输入相关的指令码:'))
        if num == 1:
            name1 = input('请输入联系人姓名:')
            if name1 in connect_dict.keys():
            # if connect_dict.has_key(name1):
                print(name1,':',connect_dict[name1])
            else:
                print('没有用户信息可以输入指令2添加用户信息')
        if num == 2:
            name2 = input('请输入联系人姓名:')
            if name2 in connect_dict.keys():
                print('您输入的姓名在通讯录中已存在-->>',name2,':',connect_dict[name2],'
    ')
                question = input('是否修改用户资料:')
                if question == 'YES':
                    answer = input('请输入用户联系电话:')
                    connect_dict[name2] = answer
                if question == 'NO':
                    print(name2,':',connect_dict[name2])
            else:
                phone2 = input('请输入联系人电话:')
                connect_dict[name2]=phone2
        if num == 3:
            name3 = input('请输入联系人姓名:')
            if name3 in connect_dict.keys():
                question3 = input('是否确定要删除该用户信息(YES/NO):')
                if question3 == 'YES':
                    del connect_dict[name3]
                    print('已删除',name3,'的个人信息')
                else :
                    print(name3,':',connect_dict[name3])
            else :
                print(name3,'不在通讯录中')
        if num == 4:
            print('|---感谢使用通讯录程序---|')
            Q = False

    *************************************思考**********************************************************

    1、跳出程序的方法有多种,C语言的思路是在循环中直接用break跳出循环,以前学习过的方法中给相关变量赋值就可以跳出循环。小甲鱼给出的是直接break跳出循环结束程序。

    2、看了小甲鱼给出的参考答案之后觉得自己写程序真的很啰嗦。。。。。所以显得程序很冗长。

    3、前几天做课后习题的时候,特别是做递归的时候一点思路都没有,都不知道该如何动手,不过这次还好,这次是先写的代码逻辑,将程序结构给列举出来了,后面针对每一个步骤给出对应的代码实现还是比较好实现的。

    @自学的路道阻且长,还有很多需要学习的地方,欢迎大家指正,一起学习,一起进步呀~~~

  • 相关阅读:
    vuex
    JS判断浏览器类型和详细区分IE各版本浏览器
    javascript json对象操作(基本增删改查)
    react 使用antd 按需加载
    vue-cli 3.0 豆瓣api接口使用element做分页
    vue-cli 3.0 使用axios配置跨域访问豆瓣接口
    es6之扩展运算符 三个点(...)
    Vue.js——十分钟入门Vuex
    js数组的处理使用
    如何发布自己模块到NPM
  • 原文地址:https://www.cnblogs.com/ljxh/p/10196482.html
Copyright © 2020-2023  润新知