python学习笔记:简单的名片管理系统

最近立志成功一名python程序猿
开始学习python
很久之前就知道python能用来做很多好玩的小东西了
比如能给自己的女神定时发天气预报邮件…
(以后应该会尝试去做)
做个智能回复陪女神聊天???
(人工zz陪女神聊天?怪不得你单身)
这就令我更想学习python了

刚入门不久!于是做了个简单的名片管理系统
写下自己第一个python的学习笔记

1.运行环境
操作系统:windows 10
python版本:3.7
编辑器:pycharm

2.编写思路:
(1) 先确定好程序所需的功能,制定好功能菜单。 功能主要有增删查改,还有一个显示已存的名片信息。然后我把删除和修改都放在了搜索的功能里,这样做起来更快更方便。
菜单图
这就是我的主菜单 输入对应的数字选择功能

(2) 接着就是给 1 2 3 功能定义函数了。为了让代码看起来更简洁,我分了两个.py文件。一个是main.py 一个是用来写功能的函数的。根据选择的数字 1 2 3 来跳转你编写的函数。main文件作为程序的入口,每次运行它就ok。

import cards_tools

while True:

    cards_tools.show_menu()

    action_str = input("请输入您的选择:")
    print("您选择的功能是【%s】" % action_str)

    if action_str in ["1", "2", "3"]:
        # 增加名片
        if action_str == "1":
            cards_tools.add_card()
        # 显示全部
        elif action_str == "2":
            cards_tools.show_all()
        # 查询名片
        elif action_str == "3":
            cards_tools.search_card()

    elif action_str == "0":
        print("退出")
        break
        # pass  # 表示一个占位符  还没开发的部分先跳过
        # 保证程序的正常运行

    else:
        print("输入错误,没有这个选项")

这是main.py的代码 简单明了

(3) 然后就做第一个功能:新增名片。先想好要将新的名片用什么数据结构来存储,我想的是将每个名片信息作为一个字典,然后将这些字典都保存到同一个列表中。这样,我们这个新增名片的功能很快就完成了。需要注意的是,定义列表的时候要定义为全局变量,因为列表在每一个函数中都是同一列表,都会用到。
在这里插入图片描述
(4) 然后就下一个功能,是显示所有的名片信息。这个功能也十分简单,我们只有制定一个表头,接着遍历一个list列表,将里面的数据print出来就好了。这里我做了一个if判断,如果列表长度为0,就输出没有名片记录的提示。
在这里插入图片描述
(5) 在搜索功能中我加入了删除和修改,在找到了名片记录的前提下,再选择是删除还是修改此名片记录。搜索功能就是遍历一遍名片列表,用if语句来判断是否跟输入的字符串一样,若是一样就打印出来,也打印一个菜单,让用户选择是 1.删除 2.修改 0.返回主菜单。这里我在搜索函数中设置了一个实参,匹配到的字典等等可以用来传递到删除或者修改的函数里。
在这里插入图片描述
(6) 删除功能十分简单,直接从列表里remove就好了。
在这里插入图片描述
(7) 修改名片的思想是,每个名片记录有不同的数据,如果用户不想修改的话就按回车,不用输入数据,要是修改的话就直接输入修改的内容。其实就是不想修改的数据我们返回原来字典里的值,要修改的就获取输入的值返回到字典里。那么怎么知道用户有没有输入数据呢?很简单,只要判断用户输入的字符串长度就好了,若是0则没有输入。
在这里插入图片描述
叮!这样我们整个简单的名片管理系统就完成啦!
我是看了教学视频然后自己总结出来的

这次主要掌握了python的语法和列表还有字典的操作
以后要不断的练习!
通过编程来提高自己的level~
其实只要用心做一件事 我们肯定都能做好的
do him!

贴上代码~(main的代码在上面已经有了)

# 存储名片信息的列表
card_list = []


def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("1.新增名片")
    print("2.显示全部名片")
    print("3.搜索名片")
    print("")  # 换行  相当于回车
    print("0.退出系统")
    print("*" * 50)


def add_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片功能")

    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入QQ:")
    email_str = input("请输入邮箱:")

    card_dict = {
        "姓名": name_str,
        "电话": phone_str,
        "QQ": qq_str,
        "邮箱": email_str,
                }

    card_list.append(card_dict)

    print("添加 %s 的名片成功" % name_str)
    # print(card_list)


def show_all():

    """显示全部名片"""
    print("-" * 50)
    print("显示所有名片信息")

    # 判断是否存在名片记录
    if len(card_list) == 0:
        print("没有名片记录")
        # 下方代码不执行
        # return后无内容  表示返回到调用函数的位置
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        # /t  制表符  用来作垂直对齐
        print(name, end="\t\t")

    print("")  # 换行

    for card_dict in card_list:
        # 要跟上面创建字典时候的键值一致 否则出现keyError
        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["姓名"],
                                        card_dict["电话"],
                                        card_dict["QQ"],
                                        card_dict["邮箱"]))


def search_card():

    """搜索名片"""
    print("-" * 50)
    print("搜索名片")

    find_name = input("请输入要搜索的姓名:")

    for card_dict in card_list:
        if card_dict["姓名"] == find_name:
            print("找到啦")
            print("姓名\t\t电话\t\tQQ\t\t邮箱")
            print("-" * 50)
            print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["姓名"],
                                            card_dict["电话"],
                                            card_dict["QQ"],
                                            card_dict["邮箱"]))

            print("")

            deal_card(card_dict)

            break
    else:
        print("抱歉,没有找到 %s 记录" % find_name)


def deal_card(find_dict):

    # print(find_dict)

    action_str = input("请选择你想执行的功能:【1】删除此名片 【2】修改此名片信息 【0】返回菜单")
    print("")

    if action_str == "1":
        # 从列表中移除此条记录
        card_list.remove(find_dict)

    elif action_str == "2":
        find_dict["姓名"] = card_input("请输入姓名(回车不修改):", find_dict["姓名"])
        find_dict["电话"] = card_input("请输入电话(回车不修改):", find_dict["电话"])
        find_dict["QQ"] = card_input("请输入QQ(回车不修改):", find_dict["QQ"])
        find_dict["邮箱"] = card_input("请输入邮箱(回车不修改):", find_dict["邮箱"])


def card_input(tip, dict_value):
    result = input(tip)

    # 如果有输入就修改  没有输入信息就返回原来字典的值

    if len(result) > 0:
        return result
    else:
        return dict_value
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值