某公司现需要统计员工出勤次数,具体要求如下: 输入样例: Mark Tom Ivor Mark Ivor Mark Jack end 输入样例解释: 每行表示某天出勤的员工名单,以空格间隔。 end表示输入结束 输出样例: Mark 3 Ivor 2 Tom 1 Jack 1 输出样例解释: 按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数
时间: 2024-03-22 14:39:30 浏览: 112
好的,这是一个统计员工出勤次数的问题,输入是员工名单,输出是每个员工的出勤次数。我们可以使用字典来统计每个员工的出勤次数,然后按照出勤次数从大到小排序,如果出勤次数相同则按照输入顺序排序。以下是 Python 的代码实现:
```python
attendance = {}
while True:
line = input().strip()
if line == 'end':
break
employees = line.split()
for employee in employees:
if employee not in attendance:
attendance[employee] = 0
attendance[employee] += 1
sorted_attendance = sorted(attendance.items(), key=lambda x: (-x[1], list(attendance.keys()).index(x[0])))
for name, count in sorted_attendance:
print(name, count)
```
以上代码中,我们首先定义了一个空字典 `attendance`,然后使用一个无限循环来读取输入。每次读取一行输入,如果输入为 `end`,则跳出循环;否则,我们将这一行输入按空格分隔成员工名单,然后遍历名单中的每个员工,将其出勤次数加 1,并保存在 `attendance` 字典中。
接下来,我们使用 Python 内置函数 `sorted` 对 `attendance` 字典按照出勤次数从大到小排序,并且按照输入顺序排序。具体来说,我们使用 `attendance.items()` 获取字典 `attendance` 的键值对,然后使用 `lambda` 表达式作为排序函数,其中 `-x[1]` 表示按照字典中的值从大到小排序,`list(attendance.keys()).index(x[0])` 表示按照字典中的键在输入中的顺序排序。最终,我们将排序结果遍历输出即可。
希望这个答案能够帮助到你!
阅读全文