XRAYr 发表于 2021-11-20 10:17

python学习项目01

python项目01

项目名称:名片管理系统

知识点:变量的类型,变量的输入输出
                          判断语句:if else;elif 和 if 嵌套
                          循环:while;break;continue;for;循环嵌套
                          函数,形参和实参;函数嵌套
            模块
            列表:取值和索引;增加;删除;排序和反转;迭代遍历
            元组:循环遍历
                          字典:增删改查;统计合并清空;循环遍历
                          字符串

目标:1、显示名片管理系统的欢迎界面,显示功能菜单
                   2、用户通过选择数字选择不同的功能
         3、名片记录信息
         4、对名片进行查找、修改和删除等

代码:
cards_main.py

```
import cards_tools

# 无限循环,由用户主动决定什么时候退出循环!
while True:
    # TODO 显示功能菜单
    # todo表示需要做的事情
    cards_tools.show_menu()

    action_str = input('请选择希望执行的操作:')
    print('你选择的操作是【%s】' % action_str )

    # 1\2\3针对名片系统操作
    if action_str in ['1', '2', '3']:
      # 新增名片
      if action_str == '1':
            cards_tools.new_card()
      # 显示全部
      elif action_str == '2':
            cards_tools.show_all()
      # 查询名片
      elif action_str == '3':
            cards_tools.search_card()
      # pass
      # 若在开发程序时,不希望立刻编写分支代码,可使用pass关键字
      # 表示一个占位符,可保证程序代码的结构正确,同时程序运行时pass不会执行操作
    # 0退出系统
    elif action_str == '0':

      print('欢迎再次使用【名片管理系统】')
      break
    # 其他操作,输入错误,提示重新输入
    else:
      print('您输入有误,请重新输入!')
```

cards.tools.py

```
# 记录所有的名片字典
card_list = []

def show_menu():
    '''显示菜单'''
    print('*' * 50)
    print('欢迎使用【名片管理系统】')
    print('')
    print('1.新增名片')
    print('2.显示全部')
    print('3.搜索名片')
    print('')
    print('0.退出系统')
    print('*' * 50)

def new_card():
    '''新增名片'''
    print('-' * 50)
    print('新增名片')
    # 1.提示用户输入名片信息
    name = input('请输入姓名:')
    phone = input('请输入电话:')
    email = input('请输入邮箱:')
    # 2.使用输入的信息建立一个名片字典
    card_dict = {'name': name,
               'phone': phone,
               'email': email}
    # 3.将名片字典添加到列表中
    card_list.append(card_dict)
    print('添加 %s 的名片成功!' % name)
    # 4.提示用户添加成功

def show_all():
    '''显示全部名片'''
    print('-' * 50)
    print('显示全部')
    # 判断是否存在名片记录,若无,提示用户并且返回
    if len(card_list) == 0:
      print('当前无名片,请添加!')
    # return 可以返回一个函数的执行结果
    # 下方的代码不会被执行
    # 若return后面没有任何的内容,表示会返回到调用函数的位置,且不会返回任何的结果
      return

    # 打印表头
    for name in ['姓名', '电话', '邮箱']:
      print(name, end='\t\t')
    print('')
    # 打印分割线
    print('=' * 50)
    # 遍历名片列表,依次输出字典信息
    for card_dict in card_list:
      print('%s\t\t%s\t\t%s' % (card_dict['name'],
                                 card_dict['phone'],
                                 card_dict['email']))

def search_card():
    '''搜索名片'''
    print('-' * 50)
    print('搜索名片')
    # 1、提示用户输入要搜索的姓名
    find_name = input('请输入要搜索的姓名:')
    # 2、遍历名片列表,查询要搜索的姓名,若无,给出提示
    for card_dict in card_list:
      if card_dict['name'] == find_name:
            print('姓名\t\t电话\t\t邮箱')
            print('=' * 50)
            print('%s\t\t%s\t\t%s' % (card_dict['name'],
                                    card_dict['phone'],
                                    card_dict['email']))
            # 针对找到的名片记录执行修改和删除的操作
            deal_card(card_dict)
            break
    else:
      print('sorry,没有找到 %s' % find_name)

def deal_card(find_dict):
    """处理查找到的名片
    :param find_dict:查找到的名片
    """
    print(find_dict)
    action_str = input('请选择要执行的操作:修改 删除 返回上级菜单')
    if action_str == '1':
      find_dict['name'] = input_card_info(find_dict['name'],'姓名:')
      find_dict['phone'] = input_card_info(find_dict['phone'],'电话:')
      find_dict['email'] = input_card_info(find_dict['email'],'邮箱:')
      print('已修改名片')
    elif action_str == '2':
      card_list.remove(find_dict)
      print('已删除名片')

def input_card_info(dict_value,tip_message):
    """输入名片信息
    :param dict_value:字典中原有的值
    :param tip_message:输入的提示文字
    :return:若用户输入,返回输入的值;否则返回原有值
    """
    # 1、提示用户输入内容
    result_str = input(tip_message)
    # 2、针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
      return result_str
    # 3、若没有输入,返回’字典中原有的值‘
    else:
      return dict_value
```

peanut98 发表于 2021-11-20 11:06

不错,再接再厉。用多了js看python这种代码风格有点不适应

rzhxw 发表于 2021-11-20 11:08

正想学的收藏 了

jobs_steven 发表于 2021-11-20 11:25

JS还没学完,又要学python,哎,,,啥时候是个头呀。

szf872591 发表于 2021-11-20 11:40

不错,我也在自学这个语言

libaibai1 发表于 2021-11-20 11:46

很好啊,我也正在学习中

DXSN 发表于 2021-11-20 11:46

不错哦,我最近也在学python

JUNE3546 发表于 2021-11-20 11:47

一步一个脚印

llb618 发表于 2021-11-20 11:51

刚装好,准备学习学习

xiaoshu1688 发表于 2021-11-20 11:59

做的比较好,注释也很清晰。
页: [1] 2
查看完整版本: python学习项目01