美文网首页
一个简单的投票统计程序V1.0

一个简单的投票统计程序V1.0

作者: snape00 | 来源:发表于2019-12-07 08:04 被阅读0次

引子

事情是这样的,我们单位最近召开新一届党委和纪委会,需要选举新一届党委委员和纪委委员,选举的方式采用差额选举。党委委员候选人9名(7名+2名差额),纪委委员候选人6名(5名+1名差额)。应到参会代表75人,实到参会代表71人。

到会的每位代表都有两张选票。每张选票的每一名候选人姓名上方是一个空表格,赞成画圈⭕️,反对画✖️,弃权空白。

作为计票人,收上来的选票中,每个人选票结果是不一样的,需要统计出候选人赞成多少票,反对多少票,弃权多少票,然后根据投票的多少排序,最后输出姓名和对应的选票。

我们的计票人员居然还在用画“正”字来统计票数,不禁唏嘘!正好我在学习python,萌生用代码来解决这个问题。


程序设计思路

  • 需要告诉程序候选人的数量
  • 需要输入候选人的姓名
  • 需要输入每一张选票的结果,用数字1代表赞成,数字2代表反对,数字0代表弃权。
  • 将所有选票的赞成票、反对票及弃权票进行汇总
  • 最终输出结果:姓名对应赞成票数,就可以看出来候选人获得的赞成票了和顺序了

代码

"""
给候选人投票,分赞成、反对和弃权
统计每个候选人的赞成、反对和弃权票总数

version:0.1
author:chris
"""
name_list = []
agree_list = []
opposition_list = []
abstention_list = []
result_list = []
a = k = n = 0

j = int(input("请问有几名候选人?:"))   # 确定候选人的数量

# 下面的代码是根据确定的候选人数量,将赞成、反对和弃权的列表初始化,每个索引位置都为零。
while a < j:
    agree_list.append(0)
    opposition_list.append(0)
    abstention_list.append(0)
    a += 1

# 下面的代码是把候选人的姓名构建成一个list
while k < j:
    i = input("请输入第%d个候选人姓名:" % (k+1))
    name_list.append(i)
    k += 1

vote_num = int(input("请问有多少张选票?"))
# 下面的代码作用是通过输入的每一张选票结果,分别统计出对应候选人的赞成票、反对票和弃权票的情况
while n < vote_num:
    n += 1
    vote = input("请输入第%d张选票结果:" % n)
    for i in range(j):
        if int(vote[i]) == 1:
            agree_list[i] += 1
        elif int(vote[i]) == 2:
            opposition_list[i] += 1
        elif int(vote[i]) == 0:
            abstention_list[i] += 1
        else:
            print("选票无效作废")

print("选票结果如下:")
print(name_list)
print("赞成票", agree_list)
print("反对票", opposition_list)
print("弃权票", abstention_list)

# 下面构建一个字典,键是候选人姓名,值是赞成票票数
print("整理后的选票情况如下:")
dict_vote = {}
for m in range(j):
    dict_vote.update({name_list[m]: agree_list[m]})
print(dict_vote)

运行结果

请问有几名候选人?:6
请输入第1个候选人姓名:a
请输入第2个候选人姓名:b
请输入第3个候选人姓名:c
请输入第4个候选人姓名:d
请输入第5个候选人姓名:e
请输入第6个候选人姓名:f
请问有多少张选票?5
请输入第1张选票结果:112111
请输入第2张选票结果:101111
请输入第3张选票结果:211111
请输入第4张选票结果:111211
请输入第5张选票结果:011111
选票结果如下:
['a', 'b', 'c', 'd', 'e', 'f']
赞成票 [3, 4, 4, 4, 5, 5]
反对票 [1, 0, 1, 1, 0, 0]
弃权票 [1, 1, 0, 0, 0, 0]
整理后的选票情况如下:
{'a': 3, 'b': 4, 'c': 4, 'd': 4, 'e': 5, 'f': 5}

小结

经过努力,基本实现了最初的目的。但是程序里面还有需要改进的地方,比如最终结果根据票数排序,赞成、反对和弃权显示结果和字典格式显示结果存在重复现象,通过差额选举的方式,告诉哪些人当选了等。

其实,我最初的设想是将代码打包成图形界面,上面是候选人姓名,下面对应位置可以点击赞成、反对或者弃权,最后可以导出投票结果。

后续我将对程序进行改进。

相关文章

  • 一个简单的投票统计程序V1.0

    引子 事情是这样的,我们单位最近召开新一届党委和纪委会,需要选举新一届党委委员和纪委委员,选举的方式采用差额选举。...

  • 工具使用——统计文章中的英文单词

    统计英语单词工具V1.0 本来我是准备好好研究一下爬虫的,结果早晨起来读英语的时候我发现如果能写一个简单的程序将我...

  • 数组:1

    编写一个投票统计 写一个程序,输入数量不确定的【0,9】范围内的整数,统计每一种数字出现的次数,输入-1表示结束 ...

  • 投票统计

    一鸣:1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=16 水青衣1 去年的茶1+1+1 焱公子:...

  • 微信人工投票1毛一票是真的吗?纯人工投票多少钱一票

    简单说微信投票刷票就是通常程序,来控制真实的微信个人号,打开目标微信投票链接进行投票。这种方式跟真人投票是一样的,...

  • Hadoop MapReduce 的基本helloworld程序

    本程序实现最简单的MapReduce程序:计算文章的词频统计,wordcount头文件 其他部分

  • 投票程序

    第一步:百度湖南基础教育资源网。,出现如下页面,点击进入! 第二步:点击进入,出现如下界面、点击资源! 第三步:出...

  • 天黑请闭眼

    基本规则V1.0 (一) 角色及任务[1] 1) 警察:找出杀手并带领平民将杀手投票出局。 2) 杀手:隐藏好身份...

  • EOS初探(3) - 智能合约投票

    本章节利用EOS的智能合约实现了简单的投票,功能包括 创建投票 发起投票 投票/委托投票 投票的winner提案 ...

  • jquery实现飘窗

    简介:此项目是一个简单的基于jquery的飘窗组件。当前版本v1.0 my-move.js 简单使用 需要引入jQ...

网友评论

      本文标题:一个简单的投票统计程序V1.0

      本文链接:https://www.haomeiwen.com/subject/riiygctx.html