您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Python开发基础-项目实训-在线投票系统
项目实训-在线投票系统完成“在线投票系统”添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息……本章任务2/30理解程序的基本概念会使用顺序、选择、循环、跳转语句编写程序会使用列表、字典等数据结构会使用相关运算符和函数做统计计算本章目标3/30开发工具PyCharmCommunityAnaconda3.5.1开发语言Python3.6.4项目环境准备4/30传统人工投票及统计票数方法投票统计速度较慢计票准确率不能保证不能在投票过程中实时输出统计结果在线投票系统采用序号投票的方式,速度较快程序进行计票统计,准确率有保证在程序中设置命令,实时调用统计模块输出统计结果项目需求分析5/30开发步骤明确需求主要阶段添加候选人给候选人投票输出统计信息明确主要功能思考各个功能的实现方式问题分析6/30项目流程图阶段1实现功能:增减候选人阶段2实现功能:1.按序号投票2.删除投票3.清空票数4.实时输出统计信息阶段3实现功能:输出统计信息7/30添加候选人项目效果参考3-18/30为候选人投票项目效果参考3-29/30输出统计信息项目效果参考3-310/30实现添加和删除候选人名使用列表数据结构,通过append()和pop()方法实现退出添加候选人阶段使用break跳出while循环实现在控制台交互使用input()函数实现使用命令的形式操作实现操作使用if语句判断输入的内容项目功能拆解—添加候选人11/30对候选人投票添加票数、减少票数和清空票数使用列表数据结构,通过append()和pop()方法实现清空票数直接将保存列表的变量赋值为空列表结束投票使用break跳出while循环实现在控制台交互使用input()函数实现使用命令的形式操作实现操作使用if语句判断输入的内容项目功能拆解—为候选人投票12/30票数计数及排序接收投票阶段返回的得票列表使用字典实现计数,返回该字典使用列表sort()方法实现排序,返回列表统计信息输出接收统计票数字典作为参数,输出统计信息排名票数票数占比项目功能拆解—输出统计结果13/30项目功能拆解—代码函数列表函数名描述append_candidates()添加候选人名append_vote()给候选人投票counter()票数计数器sort_by_value()票数排序describe()输出统计信息online_voting()主运行函数,根据需求调用相关函数14/30当添加候选人列表为空时,阻止直接进入投票阶段,并提示“请先输入候选人名”难点分析—添加候选人阶段vote_list=[]#候选人列表whileTrue:candidate=input(‘请输入候选人名或者输入命令')ifprompt.strip()=='finish':iflen(vote_list)!=0:breakelse:print(‘请先输入候选人名’)else:vote_list.append(candidate)print(‘添加候选人成功’)15/30输入的候选人名如果不在候选人名单中,提示“请输入候选人列表中的名字”难点分析—为候选人投票阶段3-1vote_list=[“张三”,”李四”]#候选人列表votes_name=[]#投票列表voting=input(‘投票给:’)ifvotinginvote_list:#判断是否在候选人列表中votes_name.append(voting)else:print(‘请输入候选人列表中的名字’)16/30操作者与命令行交互时可输入候选人名或者输入命令当输入命令时,要避免将该命令认为是操作者投票难点分析—为候选人投票阶段3-2vote_list=[“张三”,”李四”]#候选人列表votes_name=[]#投票列表key_word_list=[‘stop’,’menu’]#定义命令关键字voting=input(‘投票给:’)ifvotinginkey_word_list:#判断是否输入命令ifvoting==‘stop’:#实现stop命令的功能elif…….:#实现其他命令的功能elifvotinginvote_list:#判断是否输入候选人votes_name.append(voting)else:print(‘请输入候选人列表中的名字’)17/30为了输入速度更快,对输入的候选人序号进行投票,可以使用列表索引实现难点分析—为候选人投票阶段3-3vote_list=[“张三”,”李四”]#候选人列表votes_name=[]#投票列表voting=input(‘投票给:’)ifvotinginvote_list:#判断是否在候选人列表中votes_name.append(voting)elifvotingin[str(i)foriinrange(1,len(vote_list)+1)]:vote_name.append(vote_list[int(voting)-1])else:print(‘请输入候选人列表中的名字或者对应的序号’)input()函数返回的类型为str类型,必要时需要做类型转换注意18/30①定义函数append_candidates()②声明空列表vote_list保存候选名③使用while、break添加候选人④使用if语句实现输入命令来控制程序⑤返回vote_list列表项目实现思路—添加候选人演示示例1:实现append_candidates()函数示例19/30①定义计数函数counter(votes_name)函数的参数是投票列表(并非候选人列表)②声明空字典count_dict③遍历votes_name列表,使用count_dict计数④返回字典count_dict项目实现思路—计数函数演示示例2:实现counter()函数示例20/30①定义排序函数sort_by_value(votes,top_k=None)参数votes接收计数函数返回的字典top_k可选参数,当候选人名单较多时,选取前k②遍历votes中的items()③使用sort()函数,对票数进行降序排序④返回排序后的列表项目实现思路—排序函数演示示例3:实现sort_by_value()函数示例21/30①定义统计信息函数describe(votes,temp=False)参数votes接收counter()函数返回的计数字典temp可选参数表示调用时的位置②对votes.values()进行求和,求出总票数③调用sort_by_value()函数进行排序④最终打印出统计信息排名、票数、占总票数百分比项目实现思路—统计信息函数演示示例4:实现describe()函数示例22/30①定义投票函数append_vote(vote_list)vote_list参数是候选人列表②声明votes_name保存投票,声明命令列表③使用while、break添加投票④使用if语句实现输入命令来控制程序⑤添加菜单选项控制程序运行⑥返回votes_name投票列表项目实现思路—投票函数演示示例5:实现append_vote()函数示例23/30①定义投票函数online_voting(vote_list)②打印规则介绍信息③调用append_candidates()函数添加候选人④调用append_vote()函数进行投票⑤调用counter()进行统计计数⑥调用describe()函数进行输出统计信息项目实现思路—主运行函数演示示例6:实现online_voting()函数示例24/30编码实现“在线投票系统”学员操作完成时间:30分钟25常见问题及解决办法代码规范问题调试技巧共性问题集中讲解共性问题集中讲解26/30使用函数,让程序功能和流程的模块化更清晰设计程序时需要考虑周全,以保证程序健壮当尚未添加候选人时,不能进入投票阶段不能将票投给未在候选人列表中的人投票阶段输入命令时需要进行判断总结27/30
本文标题:Python开发基础-项目实训-在线投票系统
链接地址:https://www.777doc.com/doc-5225496 .html