【问题描述】
班主任李华想为班级安装一台考勤设备。请使用Python完成考勤计划。
您的程序需要支持三个操作:学生签到,检查某个学生何时签到,检查在特定时间和之前签到的学生人数。
【输入表格】
第一个是带有整数的行,表示操作的总数 N。
接下来的 n 行,每行三个参数 o n t 以空格分隔。
·如果 o 是整数 1,则表示同学已登录,以下参数 n 和 t 分别表示学生的姓名和签到时间。n是一个没有空格的字符串,t是时间,格式是24小时格式,它是一个四位数的整数hhmm,这意味着小时-分钟。例如,1320 表示 13:20。
·如果 o 是整数 2,则表示教师要对某个学生的签到时间进行检查。以下参数 n 表示同学的姓名,参数 t 在这里毫无意义。
·如果 o 是整数 3,则表示教师想要检查在特定时间(含)和之前签到的学生人数。下面的参数n在这里是没有意义的,参数t表示时间。时间格式与上述相同。
【输出格式】
对于每个 o==2 和 o==3,输出一行整数。
当 o==2 时,输出一个四位数整数,表示学生的签到时间,格式与上述相同(参见输入表单)。如果同学未签入,则输出整数 9999。
当 o==3 时,输出一个正整数,表示此时此刻和之前签到的学生人数。
【示例输入】
5
1 Jim 1010
2 Jim 0000
1 LiHua 1111
3 x 1100
2 XiaoMing 0000
【示例输出】
1010
1
9999
【示例说明】
对于操作 2 Jim 0000,Jim 的签入时间为 10:10,因此输出为 1010
对于操作 3 x 1100,只有 Jim 在 11:00 之前签到(1 名学生),因此输出 1
对于操作 2 XiaoMing 0000,由于XiaoMing从未签入,因此输出应为 9999
【数据范围】
1<=n<=1000
建议使用Python的字典来执行此任务。
然后是我编写的代码如下:
n = int(input())
stdin = []
login = []
logincnt = 0
checkcnt = 0
for i in range(n):
temp = input().split()
stdin.append(temp)
for i in range(n):
if(stdin[i][0] == "1"):
login.append([stdin[i][1], stdin[i][2]])
logincnt += 1
if(stdin[i][0] == "2"):
check = 0
for j in range(logincnt):
if(login[j][0] == stdin[i][1]):
print(login[j][1])
check = 1
if(check == 0):
print("9999")
if(stdin[i][0] == "3"):
for k in range(logincnt):
if(int(login[k][1]) <= int(stdin[i][2])):
checkcnt += 1
print(checkcnt)
这段代码只能通过评测点2/10,不太明白哪一部分有问题,故特地来请教。