您的位置:首页 > 编程语言 > Python开发

写的python小程序:对班级选举结果进行筛选统计

2013-06-01 13:54 691 查看
源代码和数据链接:源代码: http://download.csdn.net/detail/liyangguang1988/5495209
数据集:http://download.csdn.net/detail/liyangguang1988/5495249

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

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

程序输出:一个过滤掉不满足条件的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:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐