使用字典和列表型变量完成某课程的考勤记录统计,某班有 74 名同学,名单由考生目录下文件Name.txt给出(每行一个学生姓名),某课程第一次考勤数据由考生目录下文件1.csv给出(每行一个出勤学生姓名)。请求出第一次缺勤同学的名单。参考代码模板,补充代码完成要求。 #从1.csv文件中读取考勤数据 with open("1.csv", "r", encoding = "utf-8") as fo: foR = ___ ls = [] for line in foR: line = line.replace("\n", "") ls.append(___)# 从name.txt文件中读取所有同学的名单 with open("Name.txt", "r", encoding = "utf-8") as foName: foNameR = ___ lsAll = [] for line in foNameR: line = line.replace("\n", "") lsAll.append(___)# 求出第一次缺勤同学的名单 for first in ls: if first[0] in lsAll: lsAll.remove(___) print("第一次缺勤同学有:", end = "") for first in lsAll: print(first, end = " ")
时间: 2023-07-13 16:23:27 浏览: 305
#从1.csv文件中读取考勤数据
with open("1.csv", "r", encoding="utf-8") as fo:
foR = fo.readlines()
ls = []
for line in foR:
line = line.replace("\n", "")
ls.append(line)
#从name.txt文件中读取所有同学的名单
with open("Name.txt", "r", encoding="utf-8") as foName:
foNameR = foName.readlines()
lsAll = []
for line in foNameR:
line = line.replace("\n", "")
lsAll.append(line)
#求出第一次缺勤同学的名单
for first in ls:
if first in lsAll:
lsAll.remove(first)
print("第一次缺勤同学有:", end="")
for first in lsAll:
print(first, end=" ")
相关问题
使用字典和列表型变量完成某课程的考勤记录统计,某班有 74 名同学,名单由考生目录下文件 Name.txt 给出,某课程第一次考勤数据由考生目录下文件 1.csv 给出。求出第一次缺勤同学的名单。
以下是 Python 代码实现:
```python
# 读取名单文件
with open('Name.txt', 'r', encoding='utf-8') as f:
name_list = [name.strip() for name in f.readlines()]
# 读取考勤数据
with open('1.csv', 'r', encoding='utf-8') as f:
attendance_list = [line.strip() for line in f.readlines()]
# 将考勤数据转化为字典
attendance_dict = {}
for line in attendance_list[1:]:
name, status = line.split(',')
attendance_dict[name] = status
# 统计缺勤同学名单
absent_list = []
for name in name_list:
if name not in attendance_dict or attendance_dict[name] == '缺勤':
absent_list.append(name)
# 输出第一次缺勤同学名单
print('第一次缺勤同学名单:')
print(absent_list)
```
解释:
1. 读取名单文件,使用列表推导式将文件中的每个名字保存到 `name_list` 列表中。
2. 读取考勤数据文件,使用列表推导式将文件中的每行数据保存到 `attendance_list` 列表中。
3. 将考勤数据转化为字典,字典的键为同学名字,值为该同学的考勤状态(如“出勤”、“迟到”、“缺勤”等)。
4. 遍历名单列表,判断每个同学是否在考勤字典中,如果不在或者考勤状态为“缺勤”,则将该同学名字添加到缺勤同学名单 `absent_list` 中。
5. 输出第一次缺勤同学名单。
请编写程序,使用字典和列表型变量完成某课程的考勤记录统计,某班有100名同学,名单由考生目录下文件Name.txt给出 (每行一个学生姓名) ,某课程第一次考勤数据由考生目录下文件1.csv给出 (每行一个出勤学生姓名)。请输出第一次缺勤同学的名单
以下是Python代码实现:
```python
# 读取学生名单
with open('Name.txt', 'r') as f:
students = [line.strip() for line in f.readlines()]
# 读取第一次考勤数据
with open('1.csv', 'r') as f:
present = [line.strip() for line in f.readlines()]
# 统计缺勤同学
absent = list(set(students) - set(present))
# 输出缺勤同学名单
print('第一次缺勤名单:')
for name in absent:
print(name)
```
解释一下代码:
首先,我们使用 `with ... as ...` 语句打开 `Name.txt` 和 `1.csv` 文件,并读取其中的内容。其中,`Name.txt` 文件中每行一个学生姓名,因此我们使用 `readlines()` 方法读取每行,并使用 `strip()` 方法去除空格和换行符,将学生姓名存入 `students` 列表。同理,`1.csv` 文件中每行也是一个出勤学生姓名,因此我们存入 `present` 列表。
接着,我们使用 Python 内置的 `set` 类型求出缺勤同学名单。具体来说,我们将 `students` 和 `present` 转换为集合类型,然后使用 `-` 运算符得到差集,即 `absent` 列表。
最后,我们输出缺勤同学名单。