python集合操作班级干部竞选_写的python小程序:对班级选举结果进行筛选统计

三个班级对学院老师投票选举进行筛选,统计的程序。

程序输入:三个班级的选票文挡。

程序输出:一个过滤掉不满足条件的bad数据集,一个summary文档保存最后选举结果。

三班同学选票的数据格式:   22_23_3_11_19_3_2010210883.txt

一班、二班选票的数据格式:2010210958_1_2_7_16_18_26.txt

#!/usr/bin/env python

# -*- coding: cp936 -*-

#usage: ./1.py dir1 dir2 dir3 ...

import os

import sys

dic = {}

for i in range(1,28):

dic[i] = 0

ticks = 0

quit = []

teachers = {}

teachers['1'] = [str(x) for x in range(1,8)]

teachers['2'] = [str(x) for x in range(8,22)]

teachers['3'] = [str(x) for x in range(22,28)]

def f(dir):

print dir+" done"

if dir=="三班":

files=os.listdir(dir)

ticks=len(files)

for file in files:

tmp=os.path.splitext(file)[0].split('_')

flag=0

for i in[0,1]:

if tmp[i] not in teachers['3']:

flag=1

for i in [2,3,4]:

if tmp[i] in teachers['3']:

flag=1

if flag:

quit.append(file)

continue

for i in tmp[0:tmp.index("3")]:

if i=="0":

continue

dic[int(i)]+=1

else:

files = os.listdir(dir)

ticks = len(files)

for file in files:

tmp = os.path.splitext(file)[0].split('_')

if len(tmp) < 7:

tmp = os.path.splitext(file)[0].split('-')

if len(tmp) < 7:

quit.append(file)

continue

flag = 0

for i in [2,3]:

if tmp[i] not in teachers[tmp[1]]:

flag = 1

for i in [4,5,6]:

if tmp[i] in teachers[tmp[1]]:

flag = 1

if flag:

quit.append(file)

continue

for i in tmp[2:]:

dic[int(i)] += 1

return ticks

for dir in sys.argv[1:]:

ticks += f(dir)

results = open('summary.txt','w')

results.write('Total:{0},Effective:{1}({2:.1f}%),Quit:{3}({4:.1f}%)\n'

.format(ticks,ticks-len(quit),(ticks-len(quit))/float(ticks)*100,len(quit),len(quit)/float(ticks)*100) )

for x in sorted(dic.items(), key=lambda x:x[1],reverse=True):

results.write('{0:2d}:{1:3d}\n'.format(x[0],x[1]))

giveup = open('bad.txt','w')

for i in sorted(quit):

giveup.write(i+'\n')

排序后的文件内容:(为保护老师隐私,前面的数字对应老师的 ID 号,其对应后面为其的投票数)

baddata:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值