华为od题 56题 考勤问题--python

'''
公司用一个字符串来标识员工的出勤信息

absent: 缺勤
late: 迟到
leaveearly:早退
present: 正常上班

现需根据员工出勤信息,判断本次是否能获得出勤奖,
能获得出勤奖的条件如下:
1.缺勤不超过1次
2.没有连续的迟到/早退
3.任意连续7次考勤 缺勤/迟到/早退 不超过3次
如:
2
present
present absent present present leaveearly present absent

输出描述:
根据考勤数据字符串
如果能得到考勤奖输出true否则输出false
对于输出示例的结果应为
true false

示例二
输入:
2
present
present absent present present leaveearly present absent
输出:
true false
'''
'''
absent: 缺勤
late: 迟到
leaveearly:早退
present: 正常上班
'''
n = int(input())
kq_list = []
for i in range(n):
kq_list.append(input().split())

# kq_list = [['present'],['present','present','leaveearly','absent','leaveearly','present','present']]

l = []
for kq in kq_list:
# 1.缺勤不能超过1次
if kq.count('absent') >1:
l.append('false')
continue

#2.没有连续的迟到/早退
for i in range(len(kq)-1) :
a= kq[i]
b =kq[i+1]
if a in ['late','leaveearly'] and b in ['late','leaveearly']:
l.append('false')
break
else:
#3.任意连续7次考勤 缺勤/迟到/早退 不超过3次
for i in range(len(kq)-6):
temp_list = kq[i:i+7]
d,e,f =0,0,0
for j in temp_list:
if j == 'absent':
d +=1
elif j=='late':
e +=1
elif j == 'leaveearly':
f +=1
if d+e+f > 3:
l.append('false')
break
else:
l.append('true')
print(l)
posted @ 2022-04-25 15:45  心里日记  阅读(1246)  评论(0)    收藏  举报