题目要求:
制作同学录小程序【并实现查找功能】,最终显示的结果如下:

代码实现:

# 定义同学录
alumni = {}# 输入个人信息的函数
def input_alumni():name = input('请输入同学的姓名:')live = input('请输入同学所在城市:')telephone = input('请输入同学联系方式:')# 以元组的形式返回return name, live, telephone# 同步个人信息到同学录的函数
def create_alumni(result):# 添加新的个人信息到同学录字典中alumni[result[0]] = result[1:]# 定义展示同学录信息的函数
def show_info():print('现在有{}位同学在同学录中'.format(len(alumni)))print('-' * 40 + '风变同学录' + '-' * 40)for i in alumni:print('同学名称:{} 所在地:{} 联系方式:{}'.format(i, alumni[i][0], alumni[i][1]))# 进入主程序,欢迎界面,循环询问是否录入同学录
def main():print('欢迎进入同学录小程序')answer = input('现在可以开始录入同学录么?(回答y开始录入,回答t显示目前同学录,输入q退出程序):')while True:if answer == 'y':result = input_alumni()create_alumni(result)elif answer == 't':show_info()elif answer == 'q':breakanswer = input('还录入同学录么?(回答y继续录入,回答t显示目前同学录,输入q退出录入):')print('\n录入结束\n')# 调用函数
main()

运行结果:

 二、添加查询功能

增加查询功能find()函数,使用函数的好处是可以添加功能那个而不影响原来代码的格式。

import csv# 输入个人信息的函数
def input_alumni():name = input('请输入同学的姓名:')live = input('请输入同学所在城市:')telephone = input('请输入同学联系方式:')# 以元组的形式返回return name, live, telephone# 写入同学录
def csv_writer(file_name, result):with open(file_name, 'a', encoding='utf-8', newline='') as f:writer = csv.DictWriter(f, fieldnames=['同学名称', '所在地', '联系方式'])writer.writerow({'同学名称': result[0], '所在地': result[1], '联系方式': result[2]})# 读取同学录
def csv_reader(file_name):f = open(file_name, 'r', encoding='utf-8')reader = csv.DictReader(f)return reader# 定义查询功能的函数
def find(file_name):find_name = input('你要找哪位同学的信息呢:')print('-'*40 + '\n正在查找···\n')for row in csv_reader(file_name):if find_name == row['同学名称']:print('同学名称:{} 所在地:{} 联系方式:{}'.format(row['同学名称'], row['所在地'], row['联系方式']))breakelse:print('查无此人')print('-' * 40)# 定义展示同学录信息的函数
def show_info(file_name):print('现在有{}位同学在同学录中'.format(len(list(csv_reader(file_name)))))print('-' * 40 + '风变同学录' + '-' * 40)for row in csv_reader(file_name):print('同学名称:{} 所在地:{} 联系方式:{}'.format(row['同学名称'], row['所在地'], row['联系方式']))# 进入主程序,欢迎界面,循环询问是否录入同学录
def main():print('欢迎进入同学录小程序')start = input('请问是要创建新csv文件,还是打开已有csv文件?(回答创建或打开):')file_name = input('请输入csv文件名(以文件名.csv的格式写入):')with open(file_name, 'a', encoding='utf-8', newline='') as f:writer = csv.DictWriter(f, fieldnames=['同学名称', '所在地', '联系方式'])if start == '创建':# 写入列标题,即DictWriter构造方法的fieldnames参数writer.writeheader()elif start == '打开':print('已打开{}文件。'.format(file_name))answer = input('现在可以开始录入同学录么?(回答y开始录入,回答t显示目前同学录,回答f寻找个人信息,输入q退出程序):')while True:if answer == 'y':result = input_alumni()csv_writer(file_name, result)elif answer == 't':show_info(file_name)elif answer == 'f':find(file_name)elif answer == 'q':breakanswer = input('还录入同学录么?(回答y继续录入,回答t显示目前同学录,回答f寻找个人信息,回答q退出录入):')print('\n录入结束\n')# 调用函数
main()

运行结果:

同学录项目(Python)相关推荐

  1. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

  2. 新手python的100个实战项目,python练手经典100例项目

    Python 的练手项目有哪些值得推荐? 基础和爬虫.Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品. Python ...

  3. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计

    Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...

  4. Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计

    本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...

  5. python 播放本地音乐_实战项目—python实现本地音乐播放器

    随着网络的发展,我们已经很少将音乐下载到本地,而是直接在线听歌,方便而又直接.也许你用的音乐播放器是这个 也许是这个 这都不是重点,今天我们要用python自己打造一款音乐播放器. 具体思路 使用py ...

  6. 给python初学者的最好练手项目-Python的练手项目有哪些值得推荐?(知乎转载)...

    最近几天刚好在整理Python项目,项目由易到难,代码量从几十行到几千行,在实验环境里保证可以全部完成.找到你认为有趣的去实现它,把项目做出来,知识才能变成自己的:) (建议PC端访问,边看教程边在环 ...

  7. python项目-python项目

    泉州信息工程学院 软件学院 课程设计报告书 课程名:python课程设计 课程设计项目名称:基于Django的中餐厅网站的设计与实现 团队成员: 刘冬华.杨艺萍 一.项目简介 1.1 项目博客地址 1 ...

  8. python爬虫新手项目-Python爬虫实战之取电影天堂,,新手练手项目

    前言: 本文非常浅显易懂,可以说是零基础也可快速掌握.如有疑问,欢迎留言,笔者会第一时间回复.本文代码存于github 一.爬虫的重要性: 如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来 ...

  9. python小项目-python 小项目

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 事先录制好一段音频,客户接通电话后,自动播放https:blog.csd ...

最新文章

  1. poj2756(高精度加减)
  2. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)
  3. javascript通用验证
  4. 前端常用 JavaScript 方法封装
  5. ddd 访问权限_基于DDD的微服务设计和开发实战
  6. 【视频】Vue作者分享:Vue 3.0 进展
  7. 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度
  8. oracle仲裁机制,仲裁逻辑设计要点
  9. 程序应该怎样写比较规范
  10. J2EE(环境搭建)
  11. Windows基础知识整理
  12. SQLServer 2000 Service Pack 4 简体中文版
  13. 如果编程语言是一门武功绝学
  14. 2022年茶艺师(初级)考试练习题及模拟考试
  15. BP反向传播算法原理及公式推导
  16. windows 7 如何调出快速启动栏
  17. C++描述 LeetCode 1768. 交替合并字符串
  18. 基于SPI方式实现OLED屏显
  19. ng-options用法详解
  20. 双天线测向RTK无人车测试-替换磁罗盘和VFH避障算法测试

热门文章

  1. 计算机知识大全的软件有什么区别,硬件和软件的区别是什么
  2. 商贸公司用什么软件可以提升企业管理效率呢?
  3. 终于成功白嫖到了2T网盘
  4. 8.PointLight(点光源)-照射所有方向的光源
  5. Java查找字符串中子串
  6. 计算机技术与虚拟现实的应用,虚拟现实技术与计算机技术应用的共同发展
  7. Android屏幕密度的深刻理解
  8. 每年服务30万家庭 APFM如何成为北美最大养老“中介”企业
  9. ADC参数定义以及选型指南
  10. 中国绿色产业园发展趋势预测与投资决策分析报告2022-2028年