版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
需求;
1.统计考勤表中一共有多少个打卡用户
2.每个用户打卡多少次
3.每个用户应该打卡多少次
4.每个用户正常打卡多少次
5.主程序,整个四个需求
#encoding:utf-8
import pandas as pd
import config
def need_01():
csv_info= pd.read_csv(config.url,usecols=[1])
csv_list=csv_info["姓名"]
csv_list=list(csv_list)
csv_set=set(csv_list)
return len(csv_set)
#encoding:utf-8
import csv
import config
def need_02():
with open(config.url, 'r', encoding="utf-8") as mycsvfile:
data = list(csv.reader(mycsvfile))
data.pop(0)
dic = {}
for i in range(len(data)):
if data[i][10] != "未打卡":
if data[i][1] not in dic:
dic[data[i][1]] = 1
else:
dic[data[i][1]] += 1
for a, b in dic.items():
print (a, "打卡", b, "次")
# encoding:utf-8
import csv
import config
import pandas
from datetime import datetime
# 将用户名去重,得到所有的用户列表
def get_username():
csv_info= pandas.read_csv(config.url,usecols=[1])
csv_list=csv_info["姓名"]
csv_list=list(csv_list)
csv_set=set(csv_list)
user_list=list(csv_set)
user_new_list=[]
first_time=0
last_time=0
days=0
week=1
for user in user_list:
user_new_list.append([user,first_time,last_time,0,days,week])
# print(user_new_list)
return user_new_list
# 获得所有的用户名和用户时间
def get_userNameAndTime():
reader = list(csv.reader(open(config.url, encoding='utf-8')))
list_nameAndTime=[]
i = 0
for re in reader:
if i==0:
i=1
continue
list_nameAndTime.append([re[0],re[1]])
return list_nameAndTime
def need_03(user_list,list_time):
for i in range(len(list_time)):
for j in range(len(user_list)):
if list_time[i][1]==user_list[j][0] and user_list[j][3]==0:
user_list[j][1]=list_time[i][0]
user_list[j][3]=1
if list_time[i][1]==user_list[j][0]:
user_list[j][2] = list_time[i][0]
return user_list
def get_need_03(list_time_new):
for i in range(len(list_time_new)):
date_first=datetime.strptime(list_time_new[i][1],"%Y/%m/%d")
date_last=datetime.strptime(list_time_new[i][2],"%Y/%m/%d")
days=date_last-date_first
day=days.days
list_time_new[i][3]+=day
week = datetime.strptime(list_time_new[i][1], "%Y/%m/%d").weekday()
# print(type(week))
list_time_new[i][5]+=week
# print(len(list_time_new))
# print(type(list_time_new[i][4]))
return list_time_new
def by_days_week_get_count(list):
for i in range(len(list)):
days=list[i][3]
x=days//7
list[i][4]=x*6
y=days%7
if y!=0:
temp=y+list[i][5]
if temp>=7:
list[i][4]=list[i][4]+y-1
else:
list[i][4]=list[i][4]+y
return list
# encoding:utf-8
import config
import csv
import pandas
# 将用户名去重,得到所有的用户列表
def get_username():
csv_info= pandas.read_csv(config.url,usecols=[1])
csv_list=csv_info["姓名"]
csv_list=list(csv_list)
csv_set=set(csv_list)
user_list=list(csv_set)
user_new_list=[]
count=0
for user in user_list:
user_new_list.append([user,count])
# print(user_new_list)
return user_new_list
# 将用户名存储到字典中,方便统计正常打卡次数
# def get_dict(user_list):
# user_dict={}
# count=0
# for user in user_list:
# user_new=user
# user_dict[user_new]=count
# return user_dict
def need_way_04(user_list):
reader = list(csv.reader(open(config.url, encoding="utf-8")))
list_user = get_username()
for i in range(len(reader)):
for j in range(len(list_user)):
if reader[i][1] == list_user[j][0] and reader[i][10] == "正常":
list_user[j][1] += 1
for us in list_user:
print("%s 正常打卡的次数是:%s" % (us[0], us[1]))
# encoding:utf-8
import wyf_quchong
import block_04_yanzhenxing
import liu_count
import major_03_yangjun
import config
if __name__ == '__main__':
print("需求代号")
print("1:统计考勤表中一共有多少个打卡用户")
print("2:每个用户打卡多少次")
print("3:每个用户应该打卡多少次")
print("4:每个用户正常打卡多少次")
print("Q:退出程序")
while 1:
try:
print("请输入需求代号")
need = input("请输入需求代号:例如:1--->")
if need == "Q":
break
if need == str(1):
print("需求1查询结果:%s" % wyf_quchong.need_01())
continue
if need == str(2):
print("需求2查询结果:")
liu_count.need_02()
continue
if need == str(3):
print("需求3查询结果: ")
user = major_03_yangjun.get_username()
userAndDate = major_03_yangjun.get_userNameAndTime()
time1 = major_03_yangjun.need_03(user, userAndDate)
print(time1)
time2 = major_03_yangjun.get_need_03(time1)
print(time2)
count = major_03_yangjun.by_days_week_get_count(time2)
for i in range(len(time2)):
print("%s 应该打卡 %s 次" % (count[i][0], count[i][4] * 2))
continue
if need == str(4):
print("需求4查询结果: ")
list = block_04_yanzhenxing.get_username()
block_04_yanzhenxing.need_way_04(list)
continue
if need != str(1) and need != str(2):
if need != str(3) and need != str(4):
if need != "Q":
print("请输入正确的需求代号:正确的需求代号为:1,2,3,4")
continue
except:
print('csv文件格式或地址不正确')
continue